首页 > 代码库 > STL之vector

STL之vector

今天学习了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