STL---之vector向量容器

vector向量容器

作为数组的一个泛化推广的vector容器,不仅可以数组一样的元素随机访问,还可以在容器的尾端插入新元素

vector是一个简单,高效的容器,在尾端插入和删除元素,算法时间复杂度为O(1)常数阶,其他元素的插入和删除为O(n)的线性阶,其中n为容器的元素个数,vector具有自动的内存管理功能,对于元素的插入和删除,可动态的调整所占用的内存空间。

vector技术原理

vector容器是一个线性结构,用3个指针存放向量的起始字节位置,当前最后一个向量元素的末尾字节和整个容器所占用的内存空间的末尾字节,3个指针变量分别为m_start,m_finish和m_end_of_storage

vector应用基础

创建vector对象

1 vector<int> v;

2 vector<double> v(10); //创建一个具有10个元素的vector对象,每个元素默认值为0.0

3 vector<double> v(10,9.3); //创建一个具有10个元素的vector对象,每个元素默认值为9.3

4 vector<char> v1(5,'k');

vector<char> v2(v1);

初始化赋值

vector提供push_back函数,常用来进行vector容器的初始化,push_back函数在容器的尾端插入新元素

元素的遍历访问

vector的元素可采用数组或者迭代器的访问进行遍历访问

#include<vector>

#include<iostream>

int main()

{

using namespace std;

vector<int> v;

v.push_back(20);

v.push_back(26);

v.push_back(39);

for(int i=0;i<v.size();i++)

{

cout<<"v[" <<i <<"]=" <<v[i] <<endl;

}

return 0;

}

#include<vector>

#include<iostream>

int main()

{

using namespace std;

vector<int> v;

v.push_back(20);

v.push_back(26);

v.push_back(39);

vector<int>::iterator i,iend;

iend = v.end();

int j;

for(i = v.begin(),j = 0;i != iend;i++,j++)

{

cout<<"v[" <<j <<"]=" <<*i <<endl;

}

return 0;

}

vector提供了begin()和end()函数用于获取首元素的迭代器和最后一个元素的下一位置的迭代器

元素的插入

同于在vector容器尾部添加元素的push_back函数,insert函数可在函数的任意位置插入元素,由于插入时先将插入位置后的元素移位,以空出一个位置进行插入,因此,insert函数的执行较push_back函数稍为耗时

#include<vector>

#include<iostream>

int main

{

using namespace std;

vector<int> v;

v.push_back(6);

v.push_back(7);

v.push_back(8);

v.push_back(10);

v.insert(v.begin()+3,9); //在元素10的前面插入9

v.insert(v.begin(),5); //插入5为首元素

v.insert(v.end(),11); //插入11为末元素

for(int i = 0;i < v.size();i++)

{

cout<<"v[" << i <<"]=" <<v[i] <<endl;

}

return 0;

}

元素的删除

......待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值