您的位置:首页 > 编程语言 > C语言/C++

【学习笔记】C++高级程序设计:STL:vector

2014-08-06 17:12 495 查看
Vector

可变长的动态数组

必须包含头文件#include<vector>

支持随机访问迭代器

1、 根据下标随机访问某个元素的时间为常数

2、 在尾部添加速度很快

3、 在中间插入慢

所有STL算法都能对vector使用

Vector的成员函数

构造函数初始化

1、Vector(); 无参构造函数,将容器初始化为空的

2、Vector(int n); 将容器初始化成有n个元素

3、Vector(int n, const T &val); 假定元素类型是T,将容器初始化成有n个元素,每个元素的值都是val

4、Vector(iterator first , iterator last); 将容器初始化为与别的容器上区间[first,last)一致的内容

其他常用函数

成员函数

Void pop_back(); 删除容器末尾的元素

Void push_back(const T &val); 将val添加到容器末尾

Int size(); 返回容器中元素的个数

T &front();返回容器中第一个元素的引用

T &back();返回容器中最后一个元素的引用

简单一维动态数组实现

#include <iostream>
#include <vector>
using namespace std;
int main(){
int i;
int a[5]={1,2,3,4,5};
//静态数组a
vector<int> v(5);
//动态数组,初始化成5个元素
cout<<v.end()-v.begin()<<endl;
//end()返回最后元素之后的位置,相减得到整个容器的大小为5
for(i=0;i<v.size();i++){
v[i]=i;
//对每个容器中的元素进行赋值
}
v.at(4)=100;
//at函数访问容器中的某个元素,第五个元素赋值为100
for(i=0;i<v.size();i++){
cout<<v[i]<<",";
}
cout<<endl;

vector<int> v2(a,a+5);
//构造函数:
//通过定义一个容器的起始位置和末尾位置,来初始化一个动态数组
v2.insert(v2.begin()+2,13);
//insert函数将值,插入到对应的位置上,第三个元素值为13
for(i=0;i<v2.size();i++){
cout<<v2.at(i)<<",";
}
return 0;
}


输出:

5

0,1,2,3,100,

1,2,13,3,4,5,

二维动态数组

Vector<vector<int>> v(3);

//v有3个元素,

//每个元素都是vector<int>容器

简单二维动态数组实现

#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<vector<int> >v(3);
//定义了一个共有3行的二维动态数组
for(int i=0;i<v.size();++i){
for(int j=0;j<4;j++){
//每行共有j个元素
v[i].push_back(j);
}
}
for(int i=0;i<v.size();i++){
for(int j=0;j<v[i].size();++j){
cout<<v[i][j]<<" ";
}
cout<<endl;
}
return 0;
}


输出结果:

0 1 2 3

0 1 2 3

0 1 2 3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: