语法
1. 头文件: #include < set >
2. 定义: set < 类型 > 名字
e.g. set < int > myset; 即定义了一个存放int类型数据,名为Myset的集合容器。
3. 插入元素: 容器名字. insert( 待插入元素名字 )
e.g. myset. insert( x ); 即在Myset容器中插入了名为x的元素
4. set的特性:
- 唯一性 作为集合,其中元素必不重复,如重复插入,该语句会被忽略
- 已排序 set默认的顺序是自小到大,读入元素后会自动排序,.begin()为最小值,.end()为最大值的下一位
在set中要对元素进行读取,删除,插入的操作,需要借助迭代器来实现。
5. 迭代器: set < 类型 > :: iterator 迭代器名字;
e.g. set < int > :: iterator myiter; 即定义了一个名为myiter的对Int类型的迭代器
那么如何操作迭代器呢?
3. .begin() 指向首元素
4. .end() 指向尾元素的再下一位(it - - 后 *it读取尾元素)
5. .find(被查找元素) 指向被查找元素的位置
6. 元素的遍历
set < int > :: iterator myiter;
for(it = myset.begin();it != myset.find(totalsum);++it)
{
cout << *it << endl;
}
7. 元素的删除
成员函数 clear() 会删除 set 的所有元素。成员函数 erase() 会删除迭代器指定位置的元素或与对象匹配的元素。例如:
set<int> numbers {2, 4, 6, 8, 10, 12, 14};
auto iter = numbers.erase(++begin(numbers));
auto n = numbers.erase(12);
n = numbers.erase(13);
numbers.clear();
成员函数 erase() 可以删除一段元素:
set<int> numbers {2, 4, 6, 8, 10, 12, 14};
// iter1 points to 1st element
auto iter1 = begin(numbers);
// Points to 6th element-12
advance(iterl, 5);
// Remove 2nd to 5th inclusive. iter points to 12
auto iter = numbers.erase(++rbegin(numbers), iter1);
8. 元素的个数: 容器名字.size()
e.g. int num = myset.size(); num来记录set内元素的个数
参考这里 https://blog.csdn.net/u_nravel/article/details/80425387