1. set的初始化

set可以这样初始化:

set<int> iset{ 1,2,3 };  
set<int> iset2 = { 1,2,3 };  

在初始化set的时候,若出现重复的元素:

set<int> iset3{ 1,2,3,3,3 };  
set<int> iset4 = { 1,2,3,3,3 };  

则多余的重复元素在储存时被删去,若打印出来,set中只有1,2,3三个元素。

2. 关于set的迭代器

由于set并没有定义+和-操作,所以没有办法用set.iterator+n的方式指定迭代器,比如这样

set<int> an_set1{ 2,3,4,5,6 };

vector<int> an_vector2(an_set1.begin()+1, an_set1.end());

这样的操作是错误的。不过set定义了迭代器的自加++和自减++,所以还是可以用迭代器遍历set元素。

3. 顺序储存

加入set中的元素会被排序,默认是升序,当然也可以通过自定义的比较函数来改变排序规则。

set<int> iset{ 3,2,1,2,1,3,4,0 };
for (auto num:iset)
{
    cout << num << " ";
}

结果: