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;
}
#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;
}