STL中容器类包括“顺序存储结构”和“关联存储结构”前者包括vector deque list 后者包括set map multiset multimap. 个人感觉这两类的用法很相似,需要体会为什么叫这两个名字和分成了两个组。
至于用法会了以下两段代码就明白很多了:
set:
#include <iostream>
#include <cstdio>
#include <set>
using namespace std;
int main()
{
///声明
set<int>s;
///插入
s.insert(1);
s.insert(2);
s.insert(3);
///查找元素
set<int>::iterator ite;
ite=s.find(1); ///find返回的是查找到的地址 若没查找到就返回s.end()
if(ite==s.end()) puts("not found");
else puts("found");
///删除元素
s.erase(3);
///其他查找元素的方法
if(s.count(3)!=0) puts("found");
else puts("no found");
///遍历所有元素
for(ite=s.begin();ite!=s.end();ite++)
{
printf("%d\n",*ite);
}
return 0;
}
map:
#include <iostream>
#include <cstdio>
#include <map>
using namespace std;
int main()
{
///声明(int 为键 const char*为值)
map<int,const char*> m;
///插入
m.insert(make_pair(1,"ONE"));
m.insert(make_pair(10,"TEN"));
m[100]="HUNDRED";
///查找元素
map<int,const char *>::iterator ite;
ite=m.find(1);
puts(ite->second); ///输出ONE
ite=m.find(2);
if (ite==m.end()) puts("no found");
else puts(ite->second);
puts(m[10]); ///其他写法
///删除元素
m.erase(10);
///遍历所有元素
for(ite=m.begin();ite!=m.end();ite++)
{
printf("%d: %s\n",ite->first, ite->second);
}
return 0;
}