C++ vector的初始化、添加、遍历、插入、删除、查找、排序、释放操作

C++的vector本质上是一个动态数组,数据量不大的情况下,非常方便存储和访问操作,当然,不好的情况是数据量大的情况下,查找效率低,删除操作还会导致大量的数组移动操作。

虽然这样,vector还是一个很有用的东西,可以满足很多开发需求。

1.  vector的初始化

Vector是向量模板,C++ STL之一。前面说过vector是一个动态生长的数组,一开始vector为空时,会给一个初始化的容量(就是允许的添加个数),并申请好内存了,当往vector里面添加的元素超过现在的容量(capacity)时,就会重新更大申请内存,并把之前的所有元素,拷贝到新内存中。

因此,我们最好用到vector时,最好给他一个初始化大小,避免更多的内存申请动作和移动操作。

初始化vector元素的个数例子:

   typedef std::vector <  Type >  VectorT;

   VectorT  a(10);

Type是类型,可以是结构体、整型、指针,类对象,指针函数等。

VectorT  a(10);定义了一个初始化大小10,类型为Type的vector向量。定义后a有10个初始值为0的元素,因此要调用a.clear()把这些元素清空,清空后STL并不会销毁10个元素的内存。

其实初始化方法:

(1)初始化一个空的vector:

 VectorT  a;

(2)初始化n个值为value的vector

 VectorT   a( n , value);

2.添加元素(添加到末尾)

调用push_back()函数

void push_back (const value_type& val);

 a是vector向量

 a.push_back( val);

如果vector的容器已满,在末尾添加元素时会alloc申请更大的内存,并拷贝之前的元素到新内存,再把元素添加到vector容器末尾。

3.查找

调用find方法(需要include<algorithm>)

template <class InputIterator, class T>

   InputIterator find (InputIterator first, InputIterator last, const T& val)

如查找元素为value,找到则返回迭代器的位置,否则迭代器将指向end()

std::vector <  Type >:: iterator   iVector;

iVector = std::find(a.begin(), a.end() , value);

If(  iVector  !=  a.end())

{

找到了

}

Else

{

没找到。

}

4.遍历

利用迭代器,一开始迭代器iVector指向begin,只要不等于end,就继续遍历下去

typedef std::vector <  Type >  VectorT;

VectorT a;

VectorT::iterator iVector = a.begin();  

while(iVector != a.end())

{   

 std::cout<<" dump "<< (*iVector)<<std::endl;

 ++iVector;  

}  

5.删除末尾元素或者删除全部元素。

(1)删除一个末尾元素

a.pop_back();

//删除操

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值