我在 c++ std::set 擦除函数中遇到分段错误。我不知道SEGV的原因。请检查下面的代码并帮助我了解此SEGV的原因。
#include <iostream>
#include <set>
int main ()
{
std::set<int> myset;
// insert some values:
for (int i=1; i<10; i++) myset.insert(i*10); // 10 20 30 40 50 60 70 80 90
myset.erase (40);
std::set<int> myset2;
myset2.insert(70);
myset2.insert(90);
myset.erase (myset2.begin(), myset2.end()); //SEGV coming in this line
std::cout << "myset contains:";
for (it=myset.begin(); it!=myset.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
我用谷歌搜索但找不到解决方案。
myset.erase (myset2.begin(), myset2.end());
尽管容器是
myset2
,但您正在传递 myset
的迭代器。