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

标签 c++ stl

#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 是 false。

最佳答案

std::map::insert 的返回值为 std::pair<iterator, bool>其中bool表示是否发生插入。 cout << (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;
}

关于c++ - std::map<int,bool> 插入结果错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68692453/

相关文章:

c++ - 给定 2 个点和从第一个点到我必须找到的点的范围。如何找到我必须找到的点(在3D空间上)

c++ - 从 QTcpSocket 读取数据的问题

c++ - 交换时增量迭代器 std::next

c++ - 是否可以将 std::vector 放置到共享内存中?

c++ - 什么是 iota_n 的良好实现(STL 中缺少算法)

c++ - 在 Qt 中从对象的析构函数发出信号可以吗?

c++ - 在 C++ 中,表达式和文字有什么区别?

c++ - 链表操作的段错误

c++ - Templates::Stroustrup 的示例未编译

c++11 - 在 C++11 中为 STL 容器分配一个支撑初始化列表