gpt4 book ai didi

c++ - 在迭代期间并发修改 map

转载 作者:行者123 更新时间:2023-11-28 01:29:37 24 4
gpt4 key购买 nike

我有以下代码:

std::list<std::tuple<int,double>> myList; //assume it is empty
std::map<int,double> myMap; //assume it has values
for (auto m_itr = myMap.begin(); m_itr != myMap.end();){
myList.push_back(std::make_tuple(m_itr->first,m_itr->second));
m_itr = myMap.erase(m_itr);
}

但它抛出以下异常:

"list iterators incompatible"

我该如何解决这个异常?我想确保 map 中没有列表中已有的元素。

最佳答案

你可以简单地做:

std::list<std::tuple<int, double>> myList(myMap.begin(), myMap.end());
myMap.clear();

Demo

否则你必须使用 erase 的返回值来获取正确的迭代器。

关于c++ - 在迭代期间并发修改 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52174545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com