C++标准容器未插入新值时出现问题


#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main() {
unordered_map<string,set<int>> map;
set<int> s;
s.insert(1);
s.insert(2);s.insert(3);
map.insert(make_pair("Screen1",s));
for(auto it : map)
{
cout<<it.first<<endl;
it.second.insert(5);
}
for (auto i : map["Screen1"])
{
cout<<i<<endl;
}
}

在上面提到的代码中,我试图在映射内的集合中插入一个值5。但是it.second.insert(5(不起作用

这是我得到的输出

Screen1
1
2
3

在这个循环中:

for(auto it : map)

变量itmap中每个元素的副本,因此修改it不会修改map

如果你想修改元素,你需要做:

for(auto &it : map)

使得CCD_ 5是对CCD_。

最新更新