C++中set库用法
set是一个容器,和其他容器的区别是vector封装数组,list封装了链表,map和set封装了二叉树等。
insert(key_value); 将key_value插入到set中
inset(first,second);将定位器first到second之间的元素插入到set中void.
begin() ,返回set容器的第一个元素地址
end() ,返回位于set容器最后一个元素之后的一个迭代器
clear() ,删除set容器中的所有的元素
empty() ,判断set容器是否为空
max_size() ,返回set容器可以包含的元素最大个数
size() ,返回当前set容器中的元素个数
rbegin ,将容器内元素反转,再begin()
rend() ,将容器内元素反转,再end()
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(1);
cout << "set 的 size 值为 :" << s.size() << endl;
cout << "set 的 maxsize的值为 :" << s.max_size() << endl;
cout << "set 中的第一个元素是 :" << *s.begin() << endl;
cout << "set 中最后一个元素是 :" << *s.rbegin() << endl;
s.clear();
if (s.empty())
{
cout << "set 为空 !!!" << endl;
}
return 0;
}
count() 用来查找set中某个某个键值出现的次数。这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了。
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(1);
cout << "set 中 1 出现的次数是 :" << s.count(1) << endl;
cout << "set 中 4 出现的次数是 :" << s.count(4) << endl;
return 0;
}
erase(iterator) ,删除定位器iterator指向的值
erase(first,second),删除定位器first和second之间的值
erase(key_value),删除键值key_value的值
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
set<int>::const_iterator iter;//提供双向迭代器的类型,它可以读取set中的Const元素
set<int>::iterator first;//提供双向迭代器的类型,可以读取或修改set中的任何元素
set<int>::iterator second;
for (int i = 1; i <= 10; ++i)
{
s.insert(i);
}
//第一种删除
s.erase(s.begin());
//第二种删除
first = s.begin();
second = s.begin();
second++;
second++;
s.erase(first, second);
//第三种删除
s.erase(8);
cout << "删除后 set 中元素是 :";
for (iter = s.begin(); iter != s.end(); ++iter)
{
cout << *iter << " ";
}
cout << endl;
return 0;
}
find() ,返回给定值值得定位器,如果没找到则返回end()。
#include <iostream>
#include <set>
using namespace std;
int main()
{
int a[] = { 1,2,3 };
set<int> s(a, a + 3);
set<int>::iterator iter;
if ((iter = s.find(2)) != s.end())
{
cout << *iter << endl;
}
return 0;
}
更多用法请参考官方文档