我不知道是什么让这段代码出错。这是一个简单的多重集。没有编译错误,但执行时机器上出现段错误。
g++ 版本:4.8.2
机器:Ubuntu 14.04
#include <cstdio>
#include <set>
using namespace std;
struct compare
{
bool operator() (int lhs, int rhs) { return lhs < rhs; }
};
typedef multiset < int, compare > mi;
mi sett;
int main(void)
{
sett.insert(5);
sett.insert(5);
sett.erase(*sett.begin());
sett.erase(*sett.rbegin());
printf("Done\n");
}
最佳答案
您的第一个 erase
有效地清空了您的 multiset
。
来自 std::multiset::erase
(强调我的)
因此,第二次尝试 erase
时,您尝试取消引用 std::multiset::end
,这是 sett.rbegin()
为空 multiset
返回的内容
关于c++ - 从多集 C++ 中删除时出现段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30913658/