std::map<int,bool>插入结果错误?

std::map<int,bool> wrong result of insert?

#include <iostream>
#include <map>

using namespace std;

int main()
{
    std::map<int, bool> set;
    
    cout << (int)set.insert({ 5,false }).second << endl;
    return 0;
}

不知道为什么结果是1而不是0,而second是假的

std::map::insert 的 return 值是一个 std::pair<iterator, bool>,其中 bool 表示是否发生了插入。 cout << (int)set.insert({ 5,false }).second << endl; 只会打印是否插入成功。

为了做你想做的事,你需要使用 returned std::pair 中的第一个值,它是一个迭代器,然后用它来检查新 key/value 您插入的对:

#include <iostream>
#include <map>

int main()
{
    std::map<int, bool> set;
    std::cout << set.insert({5, false}).first->second << '\n';
    return 0;
}