set与multiset

STL魔法之 set与multiset

setmultiset 之间区别是 set 之中不会有重复的元素,而 multiset 之中可以有重复元素

setmultiset 的使用方法基本是一样的

可以看这篇 博客

这里总结一下

首先 .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++;
}
posted @ 2024-08-17 19:33  sea-and-sky  阅读(12)  评论(0编辑  收藏  举报