c++ std::set擦除中的SEGV

问题描述 投票:0回答:1

我在 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;
}

我用谷歌搜索但找不到解决方案。

c++ set
1个回答
1
投票
myset.erase (myset2.begin(), myset2.end());

尽管容器是

myset2
,但您正在传递
myset
的迭代器。

© www.soinside.com 2019 - 2024. All rights reserved.