玄学的STL
vector
vector<int>a;
这是一个不用开范围的数组;
这里的“< >”里可以用string,char,double等类型;
vector<int>G[MAXN];
这个就是开一个二维的数组,第一维就是无限,第二维的范围就是MAXN;
a.push_back(1);把1加到a的最后;
a.resize(100);相当于a[0]~a[99];
int b[100]={1,2,3,4,5};b[0]~b[4];
vector<int>a;
a.assign(b,b+5);a[0]~a[4];
就是把b[0]~b[4]里的数赋值到a[0]~a[4]里;
a.assign(3,5);a[0]~a[2];就是把a[0]~a[2]赋值为5;
a.at(id) 等价于a[id];
a.back();数组下标最大的一个;
a.front();数组下标最小的一个;
a.clear();清空,释放内存;
a.pop_back();弹出最后的一个元素;
sort(a.begin(),a.end(),mycmp);最强的排序;
set//集合,没错,就是数学里的集合,不可重复;
set<int>s;
s.insert(1);
set<int>::iterator rit; 玄学迭代器;
for(rit=s.begin();rit!=s.end();rit++)
{
cout<<*rit<<endl;
}
set<int>::reverse_iterator rit;
for(rit =s.rbegin();rit!=s.rend();rit++)
{
}反向迭代;
s.find(5); end();查找5的地址(如果有的话)没有则为end();
if(s.find(5)==s.end())
s.count(5)==0;因为是集合,所以最大为1;
map这是一种映射;
map<string,int>m;从string向int的映射;
m["Aico"]=1;就像这样;
s[m["Aico"]]=100;其中的m["Aico"]就是=1;
s[1]=100;
预知后事如何,
且听下回分解!