从集合中删除值
最明显的方法是,如果你只是想将你的 set / multiset 重置为空的,就是使用 clear
:
std::set<int> sut;
sut.insert(10);
sut.insert(15);
sut.insert(22);
sut.insert(3);
sut.clear(); //size of sut is 0
然后可以使用 erase
方法。它提供了一些与插入相当的可能性:
std::set<int> sut;
std::set<int>::iterator it;
sut.insert(10);
sut.insert(15);
sut.insert(22);
sut.insert(3);
sut.insert(30);
sut.insert(33);
sut.insert(45);
// Basic deletion
sut.erase(3);
// Using iterator
it = sut.find(22);
sut.erase(it);
// Deleting a range of values
it = sut.find(33);
sut.erase(it, sut.end());
std::cout << std::endl << "Set under test contains:" << std::endl;
for (it = sut.begin(); it != sut.end(); ++it)
{
std::cout << *it << std::endl;
}
输出将是:
Set under test contains:
10
15
30
所有这些方法也适用于 multiset
。请注意,如果你要求从 multiset
中删除元素,并且该元素多次出现,则将删除所有等效值。