使用前需要#include <set>
头文件。
s.begin() 返回set容器的第一个元素
s.end() 返回set容器的最后一个元素 ,但是,又有人说s.end();
返回指向容器最后一个数据单元+1的指针,如果我们要输出最后一个元素的值应该是*(--s.end());
我测试的结果是两个都一样,为什么。。。
s.clear() 删除set容器中的所有的元素
s.empty() 判断set容器是否为空
s.insert() 插入一个元素
s.erase() 删除一个元素
s.size() 返回当前set容器中的元素个数
//set的插入及遍历操作
#include <iostream>
#include <cstdio>
#include <set>
using namespace std;
set<int> s;
int main()
{
s.insert(1);
s.insert(4);
s.insert(2);
s.insert(3);
s.insert(1);
cout << *(s.end())<< " ";
cout << s.size() << endl;
for (set<int>::iterator it = s.begin(); it != s.end(); it++)
{
cout << *it << endl;
}
return 0;
}
我在cout << s.end() << " ";
这里遇到了一个问题,这样子就报错了,后来我发现s.end()
是指针类型的对象,所以需要用*来指向它。
另外,粗略说说迭代器iterator。
要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。
所以说,它经常和set、vector这些一起用。
迭代器按照定义方式分成以下四种。
正向迭代器,定义方法如下: 容器类名::iterator 迭代器名;
常量正向迭代器,定义方法如下: 容器类名::const_iterator 迭代器名;
反向迭代器,定义方法如下: 容器类名::reverse_iterator 迭代器名;
常量反向迭代器,定义方法如下: 容器类名::const_reverse_iterator 迭代器名;
另外,遍历set时的循环体中的it != s.end()
应该记得不是<号,因为我们不知道到哪里停。