set与multiset
STL魔法之 set与multiset
set
与 multiset
之间区别是 set
之中不会有重复的元素,而 multiset
之中可以有重复元素
set
和 multiset
的使用方法基本是一样的
可以看这篇 博客
这里总结一下
首先 .begin() .end() .lower_bound() .upper_bound()返回的都是迭代器
其中 .end() 返回的是最后一个空的占位符,没有元素
而迭代器要通过 ++ 或 -- 来移动
举个栗子
插入元素
set<int> x;
x.insert(a);
删除元素
//erase 可以用来直接删去一个值对应的所有元素(直接传入值即可)
//erase 也可以删除一个迭代器 一次只删一个元素
//erase 也可以删一个区间的所有元素 [左闭右开)
一次删除一个元素 \(a\)
if (q.find(a) != q.end())//如果找得到a元素
{
q.erase(q.find(a));//删掉a
}
删除所有 \(a\) 元素
q.erase(a);
删除末尾的元素
q.erase(--q.end());
删除头的元素
q.erase(q.begin());
遍历set中的所有元素
set<int>::iterator a;
a = q.begin();
while (a != q.end())
{
cout << *a << " ";//对a解引用
a++;
}