欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c++中的vector的简介

程序员文章站 2022-06-17 19:23:09
向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于stl(standard template library, 标...

向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于stl(standard template library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。

在使用它时, 需要包含头文件 vector, #include

vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所要放入的元素。此外, vector 也提供了许多的方法来对自身进行操作。

声明和初始化:

vector a ;                                //声明一个int型向量a
vector a(10) ;                            //声明一个初始大小为10的向量
vector a(10, 1) ;                         //声明一个初始大小为10且初始值都为1的向量
vector b(a) ;                             //声明并用向量a初始化向量b
vector b(a.begin(), a.begin()+3) ;        //将a向量中从第0个到第2个(共3个)作为向量b的初始值

或者list initialization

vector v1{"a", "an"}; // initialize with two elements
vector v2("a"); // error

或者用另一个向量初始化:

vector v2(v1);
vector v2 = v1;

或者直接用数组初始化:

int n[] = {1, 2, 3, 4, 5} ;
vector a(n, n+5) ;              //将数组n的前5个元素作为向量a的初值
vector a(&n[1], &n[4]) ;        //将n[1] - n[4]范围内的元素作为向量a的初值

添加element:

vector v;
for (int i = 0; i < 100; i++) {
    v.push_back(i);
}

other common operations:

v.empty(); // return true if v is empty
v.size(); // return the number of the elements in vector

元素的访问:

// using subscript
int i ;
for(i=0; i::iterator t ;
for(t=a.begin(); t!=a.end(); t++)
    cout<<*t<<" " ;

c++ 中,所以容器操作更加鼓励iterator but not subscript

动态插入和删除:

插入:
指定起始位置, 插入元素以及个数
或者指定插入内容为另一个vector或者数组里的一段,类似begin(), end().

// inserting into a vector
#include 
#include 

int main ()
{
  std::vector myvector (3,100);
  std::vector::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 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