如何删除集合中的最后一个成员?
例如:
set<int> setInt;
setInt.insert(1);
setInt.insert(4);
setInt.insert(3);
setInt.insert(2);
Run Code Online (Sandbox Code Playgroud)
如何删除4从setInt?我尝试过类似的东西:
setInt.erase(setInt.rbegin());
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误.
Ben*_*ley 35
在C++ 11中
setInt.erase(std::prev(setInt.end()));
Run Code Online (Sandbox Code Playgroud)
您可以决定如何处理集合为空的情况.
Ste*_*sop 20
if (!setInt.empty()) {
std::set<int>::iterator it = setInt.end();
--it;
setInt.erase(it);
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果你这么做(按任意顺序添加东西然后删除顶部元素),你也可以看看std::priority_queue,看看是否适合你的用法.
我建议使用一个rbegin具有正确类型的不同名称:
setInt.erase(--setInt.end());
Run Code Online (Sandbox Code Playgroud)
假设你检查setInt不是空的!
顺便说一句.这是有效的,因为你可以在临时(类型std::set<int>::iterator)上调用变异减量运算符.然后将该临时值传递给擦除功能.