首页 > 解决方案 > 标准::地图插入结果错误?

问题描述

#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是假的。

标签: c++stl

解决方案


std::map::insert的返回值是表示插入是否发生std::pair<iterator, bool>的地方。只会打印插入是否成功。boolcout << (int)set.insert({ 5,false }).second << endl;

要执行您想要的操作,您需要使用返回的第一个值,std::pair它是一个迭代器,然后使用它来检查您插入的新键/值对的值:

#include <iostream>
#include <map>

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

推荐阅读