下面简单总结下set容器的操作:
1、set对象的定义和初始化
set对象的定义和初始化方法包括:
sets;
sets(s1);
sets(b, e);
其中,b和e分别为迭代器的开始和结束的标记。
例如:
#include #include #include using namespace std;
int main(){
vectorv;
for (int i = 0; i < 10; i++){
v.push_back(i);
v.push_back(i);
}
sets(v.begin(), v.end());
printf("%d\n", v.size());
printf("%d\n", s.size());
return 0;
}
注意:键是不能重复的。
2、set中数据的插入
与map不同,set中数据只能通过insert()函数进行插入。
例如:
#include #include #include using namespace std;
int main(){
vectorv;
for (int i = 0; i < 10; i++){
v.push_back(i);
v.push_back(i);
}
sets;
s.insert(v.begin(), v.end());
set::iterator it;
for (it = s.begin(); it != s.end(); it++){
printf("%d\t", *it);
}
printf("\n");
s.insert(10);
for (it = s.begin(); it != s.end(); it++){
printf("%d\t", *it);
}
printf("\n");
return 0;
}
3、从set中查找和读取元素
从set中查找同样可以使用count()函数和find()函数,两者的区别在之前的map中已经总结。
例如:
#include #include #include using namespace std;
int main(){
vectorv;
for (int i = 0; i < 10; i++){
v.push_back(i);
v.push_back(i);
}
sets;
s.insert(v.begin(), v.end());
set::iterator it;
for (it = s.begin(); it != s.end(); it++){
printf("%d\t", *it);
}
printf("\n");
printf("%d\n", s.count(9));
printf("%d\n", *(s.find(9)));
return 0;
}
4、从set中删除元素
从set中删除元素使用到的函数是erase()函数,主要有以下的几种形式:
erase(k);
erase(p);
erase(b, e);
其中,p表示的迭代器指向的元素,b和e分别是迭代器的开始和结束。
例如:
#include #include #include using namespace std;
int main(){
vectorv;
for (int i = 0; i < 10; i++){
v.push_back(i);
v.push_back(i);
}
sets(v.begin(), v.end());
set::iterator it;
for (it = s.begin(); it != s.end(); it++){
if (*it == 5){
break;
}
}
s.erase(it, s.end());
set::iterator it_1;
for (it_1 = s.begin(); it_1 != s.end(); it_1++){
printf("%d\t", *it_1);
}
printf("\n");
return 0;
}