C++ 标准容器不插入新值的问题
Problem with C++ standard container not inserting new values
#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)
变量 it
是 map
中每个元素的副本,因此修改 it
不会修改 map
.
如果要修改元素,需要做:
for(auto &it : map)
因此 it
是对 map
中每个元素的引用。
#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)
变量 it
是 map
中每个元素的副本,因此修改 it
不会修改 map
.
如果要修改元素,需要做:
for(auto &it : map)
因此 it
是对 map
中每个元素的引用。