头文件
#include<set>
定义
创建集合时,要说明使用的数据类型与集合名称。
set<data_type>set_name;
- 举个栗子:
set<int>st; //定义一个集合,名称为st,存放int类型(对整型去重加排序,默认升序)
set<string>st; //定义一个集合,名称为st,存放string类型(对字符串去重加排序,默认字典序)
元素插入
st.insert(data);
元素个数
st.size();
这里的size指的是去重后元素的个数。如:插入1,1,1,1,1 size为1,而不是5
元素删除
删除集合中的某个元素
st.erase(data);
- 举个栗子
·st.erase(2);
删除前(size为6)
删除后(size为5)
正向遍历(升序)
set<int>::iterator iter1 = st.begin(); //定义正向迭代器
for (; iter1 != st.end(); iter1++)
cout << *iter1 << " ";
注意:end是指向最后一个元素的下一个位置。
反向遍历(降序)
set<int>::reverse_iterator iter2 = st.rbegin(); //定义反向迭代器
for (; iter2 != st.rend(); iter2++)
cout << *iter2 << " ";
注意:rend是指向最后一个元素的下一个位置。
代码实现
#include<iostream>
#include<set> //set容器的头文件
using namespace std;
int main() {
int a[10] = { 2,3,6,9,5,4,7,8,5,4 };
set<int>st; //定义一个集合,存放int类型(对整形去重加排序)
for (int i = 0; i < 10; i++)
st.insert(a[i]); //元素插入
set<int>::iterator iter1 = st.begin(); //正向遍历
for (; iter1 != st.end(); iter1++)
cout << *iter1 << " "; //通过迭代器输出
putchar('\n');
set<int>::reverse_iterator iter2 = st.rbegin(); //反向遍历
for (; iter2 != st.rend(); iter2++)
cout << *iter2 << " ";
putchar('\n');
cout << "请空前的size:" << st.size() << endl; //请空前的size
st.clear(); //清空st这个集合
cout << "清空后的size:" << st.size() << endl; //清空后的size
return 0;
}