使用之前包含头文件 #include<set>
定义一个集合:和其他的容器类似 set<int> S; 这行代码就构造了一个空的集合S;
或者使用内部默认的构造函数 set<int> S = {3, 2, 1, 4, 5}; 用一个列表来给空的集合S来赋值,此时集合内部的抽象形式应该是如下图所示的:
insert() 操作:
使用S.insert(1); 表示往集合里面插入一个元素1 由于集合的元素不能重复,所以插入相当于无效
使用S.insert(7); 表示往集合里面插入一个元素7
find()操作
find函数会返回集合元素在集合中的位置,如果没有找到元素,则会返回end位置
auto iter = S.find(0); 因为当前集合里面没有0元素,所以此时iter就是S.end()
begin()操作和end()操作
begin操作会返回集合中的最小元素,end操作则是集合中最大元素的后一位,为前闭后开的区间
erase()操作
erase操作表示从集合中删除一个元素
代码展示
#include <iostream> #include <set> using namespace std; int main() { set<int> S = {3, 2, 1, 4, 5}; //集合的初始状态 // 插入. S.insert(1); S.insert(7); // 查找与删除. auto iter = S.find(0); if (iter != S.end()) S.erase(iter); iter = S.find(5); if (iter != S.end()) S.erase(iter); S.erase(5); // 迭代器位置. iter = S.begin(); cout << *iter << endl; ++iter; //当前元素位置的下一个位置(按照排好序的位置) cout << *iter << endl; --iter; //当前元素位置的上一个位置(也是排好序的位置) cout << *iter << endl; // 遍历集合, 为简便计我们不讨论常量迭代器. for (auto iter = S.begin(); iter != S.end(); ++iter) //从头遍历到尾,也就是从最小元素遍历到最大元素 cout << *iter << ' '; cout << endl; for (auto riter = S.rbegin(); riter != S.rend(); ++riter) //表示逆序遍历,r表示逆序,也就是从最大元素遍历到最小元素 cout << *riter << ' '; cout << endl; for (const auto& x : S) //基于范围的for循环写法,每次从S中取出一个元素赋值给x,然后将x输出 cout << x << ' '; cout << endl; return 0; }
Comments 1 条评论
博主 mathor
顶一顶