c++ - 标准::地图插入结果错误?
问题描述
#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
的返回值是表示插入是否发生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;
}
推荐阅读
- python - 奇点图像在不同机器上的不同行为?
- php - 如何从网络打印到通过 USB 连接的本地热敏打印机?
- symfony - Api-Platform graphql - 在一个突变中创建多个项目
- oracle - Oracle 索引建立/删除历史
- r - 使用 dplyr::c_across 和 filter_if 在同一调用中过滤无限值和 NA
- vb.net - vb.NET 在同一选项卡控件中的两个选项卡页之间拖放
- python - 用两个不同的字符串替换子字符串,具体取决于它们的位置
- python - 我的程序使用 IMDBpy 有没有一种方法可以使用该程序而无需在使用之前手动安装 IMDBpy?
- java - 如何在可点击的跨度小部件中从 Firestore 中检索图像?
- java - 如何使用图形在 JPanel 上绘图