上午看了三鲜的退役报告,感触良多,ACM的最后一年了,决定学习他的方法,少看解题报告,自己想,或许到了某天我也可以发明出什么YY树之类的什么东西,最近在做线段树,里面要用到vactor动态数组,决定自己好好的学学而不是去看别人的解题报告,从这里来好好学学吧,自己一点点的摸索而不是直接获得简单的知识。
1.insert
包含头文件#include<vector>
申明 vector<XX>B( 3,100 ) -> [ 100,100,100];
迭代器声明vector<XX>::iterator C;
插入方法多样:
B.insert( b.begin(),200 ) -> [200,100,100,100];
B.insert( b.begin(),2,100 ) ->[100,100,200,100,100,100];
可以插入数组或者vector
B.insert( B的迭代器,要插入的迭代器首,迭代器尾 );
数组:
B.insert( B的迭代器,要插入的数组首,数组尾 );
2.输出vector
1>for( i=B.begin();i<B.end();i++ )//i为迭代器
cout<<*i;
2.>for( i=0;i<B.size();i++ )
cout<<B[i];
3 push_back & pop_back
这两个操作模拟堆栈,push_back压栈,pop_back弹栈;
4.assign
用来初始化vector 例如A.assign( 7,100 );
用vector来初始化 B.assign( A.begin()+1,A.end()+1)
用数组来初始化 C.assign( array,array+n );
5.erase
B.erase( B.begin(),B.begin()+3 );
0,1,2,3全擦除
6.swap
A.swap(B);
A,B两个vector 中的元素全体交换
7.clear
A.clear()全清零
8.at
类似于数组的下标
B.at(1)=5 <-> B[1]=5;