今天学习了STL 以前用的c,可是比赛回来发现c有点弱,c++的stl是比较实用的,适合比赛.所以学习了一下.
vector.
这是一个容器,其实就是线性表.
使用之前在头部加上#include <vector>
然后就可以使用
vector<type> vec; //type is a kind of basic type (eg. int double
..)
然后访问这个表的时候需要声明一个变量
vector<type>::iterator ite;
然后就可以用for来遍历这个线性表了
for(ite=vec.begin();ite!=vec.end();ite++)
cout<<*ite<<endl;
可以使用vector<type> vec2(2,100); //意思是vec2的前两个位置是100 (初始化)
这个容器有一些自己的函数
1.常用的assign有两种:
一种是 vec.assign(元素数i,值v) 意思是把vec这个容器的前i个元素的值变成v.
另一种是vec.assign(vec1的一个位置s,vec1的另一个位置e)
意思是把vec1这个容器的位置s到位置e的值copy给vec的从开头开始的一片相同大小的区域.
2.insert可以在指定位置插入元素
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myvector (3,100);
std::vector<int>::iterator it;
it = myvector.begin();
it = myvector.insert ( it , 200 );
myvector.insert (it,2,300);
// "it" no longer valid, get a new one:
it = myvector.begin();
std::vector<int> anothervector (2,400);
myvector.insert (it+2,anothervector.begin(),anothervector.end());
int myarray [] = { 501,502,503 };
myvector.insert (myvector.begin(), myarray, myarray+3);
std::cout << "myvector contains:";
for (it=myvector.begin(); it<myvector.end(); it++)
std::cout << ‘ ‘ << *it;
std::cout << ‘\n‘;
return 0;
}
输出:
myvector contains: 501 502 503 300 300 400 400 200 100 100 100