1.multiset/set的使用
#include
multiset s; //set s;
区别:multiset元素可重复,set不可重复,其内容有序。
set常见成员列表:
begin()--返回指向第一个元素的迭代器
clear()--清除所有元素
count()--返回某个值元素的个数
empty()--如果集合为空,返回true
end()--返回指向最后一个元素的迭代器
erase()--删除集合中的元素
find()--返回一个指向被查找到元素的迭代
insert()--在集合中插入元素
size()--集合中元素的数目
2.逆向迭代器
multiset::reverse_iterator it=s.rbegin();
//逆向迭代器
与正向迭代器区别:iterator前多了
reverse_
,begin前多了
r
3.SStream流读写string
#include
//包含stringstream的头文件
stringstream ss(s);
//假设已经存在字符串s
while(ss >> buf)
dict.insert(buf);
//读出每个字符串并加入dict
4.连接表创建图
vector G[MAX_N];
cin >> s >> t;
G[s].push_back(t);
//s向t连边
//G[t].push_back(s);
//t向s连边,无向图
若边上有属性可创建结构体,
切记无向图需连两边
5.利用map分层记录
struct B
{
map C;
};
map A;
若有一map名为m,m->first表示左边[]中元素值,m->second表示对应的右边的值。若要访问C则需,A->second.C,则 A->second.C->first表示C的左边,A->second.C->second表示C的右边。
6.memset函数的使用
#include //#include
memset(a,0,sizeof(a));
//可初始化一维二维数组,不可初始化vector
注意:vector是无法用memset初始化的!!
7.c++文件的使用
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
8.c++重载运算符
bool friend operator<(node a1,node a2)
{
return a1.step>a2.step;
}