【学习笔记】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();返回容器中最后一个元素的引用
简单一维动态数组实现
输出:
5
0,1,2,3,100,
1,2,13,3,4,5,
二维动态数组
Vector<vector<int>> v(3);
//v有3个元素,
//每个元素都是vector<int>容器
简单二维动态数组实现
输出结果:
0 1 2 3
0 1 2 3
0 1 2 3
可变长的动态数组
必须包含头文件#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
相关文章推荐
- 【学习笔记】C++高级程序设计:STL:函数对象
- 【学习笔记】C++高级程序设计:STL:List 和 deque
- 【学习笔记】C++高级程序设计:STL标准模板库
- 【学习笔记】C++高级程序设计:STL标准模板库(2)
- 【学习笔记】C++高级程序设计:STL:Set 和 Multiset
- 【学习笔记】C++高级程序设计:STL:Map 和 Multimap
- C++ Standard Stl -- SGI STL源码学习笔记(07) stl_vector 与 一些问题的细化 3 resize函数剖析
- C++ Standard Stl -- SGI STL源码学习笔记(06) stl_vector 与 一些问题的细化 2 push_back函数剖析
- C++学习笔记——STL(二)vector容器
- C++ Standard Stl -- SGI STL源码学习笔记(05) stl_vector 与 一些问题的细化 1
- c++ STL学习笔记-----vector
- C++ STL学习笔记二 vector向量容器
- C++ STL 学习笔记 vector
- C++ STL--vector向量容器学习笔记
- JavaScript高级程序设计学习笔记3: Math对象比较常用的几个方法
- C++ Primer 学习笔记(3): Vector与List
- <<SQL Server 2005 高级程序设计>> 学习笔记(4)
- <<SQL Server 2005 高级程序设计>> 学习笔记(2)
- <<SQL Server 2005 高级程序设计>> 学习笔记(1)
- STL学习笔记----C++的新语言特性