c++中vector的使用:如何求二维vector的大小以及insert函数的用法

来源:互联网 发布:淘宝昵称怎么改不了 编辑:程序博客网 时间:2024/06/09 17:08

http://blog.csdn.net/yuanjilai/article/details/7321484这篇博客里面有详细的vector变量的使用方式!!

对于二维vector变量,vv.size()的值vector的行数,vv[i].size()的值是vector的列数!!

一个二维向量每个元素的长度可以不同,例如

[cpp] view plain copy
  1. vector<vector<int> >vv;  
  2. for(int c = 1; c <= 3; c++)  
  3.     vv.push_back(vector<int>(c,0));  

上面代码产生一个长度不同的二维向量,第一行只有1个元素,第二行有两个,第三行三个。


.

vector中insert函数的使用方式有下面三种:

iterator insert(iterator position,const value_type& val)

void insert(iterator position,size_type n,const value_type& val)

void insert(iterator position, InputIterator first,InputIterator last)

插入元素的时候,vector是通过在特定位置position的前面插入新的元素来进行扩展的。通过插入的元素有效的增加了容器的size。

当且仅当新的向量大小超过当前向量容量的时候,会导致已经分配的存储空间自动重新分配。

因为vector使用array作为他们的底层存储,所以在position位置插入元素而不是在vector的end插入元素会引起容器重新分配所有的位于position后面的元素去到新的position。

这个操作总的来说并不是效率很高,相比于通过其他种类的序列容器比如list或者forward_list实现同样的操作。

insert里面的参数决定了插入元素的个数以及他们应该初始化的值。

上面的方式中,最后一个中的first和last,是指明一定范围的迭代器。[first, last)中的元素会被插入到position,顺序不变。需要注意的是这个范围包括元素first但是不包括元素last。

对于iterator类型的返回值,返回的迭代器指向的是新插入的元素中的第一个元素。!!


二维vector向量的初始化:

vector<vector <int> > ivec(m ,vector<int>(n)); //m*n的二维vector,注意两个 "> "之间要有空格!

vector<vector <int> > ivec(m ,vector<int>(n,0)); //m*n的二维vector,所有元素初始化为0

具体的可以查看http://www.cnblogs.com/wei-li/archive/2012/06/08/2541576.html