【发布时间】:2021-01-23 10:01:50
【问题描述】:
当我在下面运行这段代码时,我的程序崩溃了:
std::set<int> m_set = {1, 2, 3, 4, 5 };
std::set<int>::iterator setIt = m_set.begin();
++setIt;
m_set.erase(setIt);
m_set.insert(setIt, 25);
我有一个 std::set,它由对象 Point 填充。代码编译成功,但在m_set.insert(setIt, 25) 处崩溃。我应该怎么做才能修复它?谢谢!
【问题讨论】:
-
请在问题中包含minimal reproducible example。
Point是什么? -
删除后迭代器失效。你期望会发生什么?据我所知,提示(第一个参数)不是必需的,并不总是有用的。
-
btw "stl" 用于(错误地)引用 c++ 标准库或实际的 STL。标签说明很清楚,标签是给STL的,不是给标准库的。
-
ot:好吧,在阅读了完整的标签描述之后,我不确定该标签是否应该用于 c++ 标准库。恕我直言,这取决于应归功于谁并调用标准库 stl,而忽略了它的来源