Kat*_*tie 1 c++ vector erase clear
我在文件x.cpp中有以下语句.供应商和地点是我创建的课程.如果我在main.cpp中写
Suppliers s;
s.clean_up();
Run Code Online (Sandbox Code Playgroud)
并在文件x.cpp中
void Suppliers::clean_up(){
for(auto i : setter){
i.second.clear();}}
Run Code Online (Sandbox Code Playgroud)
Setter是供应商的公共数据成员
map<std::string,std::vector<location>> setter
Run Code Online (Sandbox Code Playgroud)
我尝试打印时不会清除地图.相反,如果我在main中有以下内容,我的地图中的值将按照我的预期清除.
Suppliers s;
for (auto item : s.setter){
item.second.clear();}
Run Code Online (Sandbox Code Playgroud)
我没有编译器错误,在一种情况下,位置向量被擦除,在一种情况下它不是.我唯一能想到的是setter的实例并不相同.但因为我正在使用一种方法,我无法理解为什么这不起作用.任何帮助都会很棒,提前谢谢!
您应该使用对地图项的引用进行迭代
for(auto& i : setter)
{
i.second.clear();
}
Run Code Online (Sandbox Code Playgroud)
否则i将是每个的副本std::pair<std::string, std::vector<location>>.所以它将clear()是副本的向量,而不是实际的实例map.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |