STL常用容器用法之——vector
来源:互联网 发布:windows功能哪些不能关 编辑:程序博客网 时间:2024/06/13 16:48
Vector容器
vector是将元素置于一个动态数组中加以管理的容器。
vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时。
1、定义一个vector容器
vector采用模板类实现,vector对象的默认构造形式
vector<T> vecT;
vector<int> vecInt; //一个存放int的vector容器。
Class CA{};
vector<CA*> vecpCA; //用于存放CA对象的指针的vector容器。
vector<CA> vecCA; //用于存放CA对象的vector容器。由于容器元素的存放是按值复制的方式进行的,所以此时CA必须提供CA的拷贝构造函数,以保证CA对象间拷贝正常。
2、vector添加删除
vector<int> vecInt;
vecInt.size(); //容器的大小,默认为0
vecInt.push_back(1); //在容器尾部加入一个元素
vecInt.push_back(3);
vecInt.push_back(5);
int iF = vecInt.front(); //获取头部元素1
int iB = vecInt.back(); //获取尾部元素5
vecInt.front() = 11; //设置头部元素11 {11 3 5}
vecInt.back() = 55; //设置尾部元素55 {11 3 55}
vecInt.pop_back(); //删除尾部元素
3、vector的初始化
int iArray[] = {0,1,2,3,4};
vector<int> vecIntA( iArray, iArray+5 );
vector<int> vecIntB ( vecIntA.begin() , vecIntA.end() ); //用构造函数初始化容器vecIntB
vector<int> vecIntB ( vecIntA.begin() , vecIntA.begin()+3 );
vector<int> vecIntC(3,9); //此代码运行后,容器vecIntB就存放3个元素,每个元素的值是9。
4、vector的遍历
1)通过数组的方式
vector<int> v1(10); //提前把内存准备好 每个元素初始化为0
for (int i=0; i<10; i++)
{
v1[i] = i + 1;
}
{
printf("%d ", v1[i]);
}
for (vector<int>::iterator it = v1.begin(); it != v1.end(); it ++ )
{
cout << *it << " ";
}
//逆序遍历
for (vector<int>::reverse_iterator rit = v1.rbegin(); rit!=v1.rend(); rit++ )
{
cout << *rit << " ";
}
5、vector的删除操作
v1.erase(v1.begin(), v1.begin()+3);
v1.erase(v1.begin()); //在头部删除一个元素 输入:迭代器
v1[1] = 2;
v1[3] = 2;
printV(v1);
for (vector<int>::iterator it =v1.begin(); it != v1.end();)
{
if (*it == 2)
{
it = v1.erase(it); //当 删除迭代器所指向的元素的时候,erase删除函数会返回迭代器it的下一个位置
}
else
{
it ++;
}
}
//删除vecInt的所有元素
vecInt.clear(); //容器为空
6、vector的插入
vector.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
vector.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
vector.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值
vecA.insert(vecA.begin(),11); //{11, 1, 3, 5, 7, 9}
vecA.insert(vecA.begin()+1,2,33); //{11,33,33,1,3,5,7,9}
vecA.insert(vecA.begin(), vecB.begin() , vecB.end() ); //{2,4,6,8,11,33,33,1,3,5,7,9}
- STL常用容器用法之——vector
- STL — vector容器用法详解
- stl之序列容器——vector
- STL常用容器用法之——Deque
- STL常用容器用法之——stack
- STL常用容器用法之——queue和priority_queue
- STL常用容器用法之——List
- STL常用容器用法之——Set和multiset
- STL常用容器用法之——Map和multimap
- STL之二:vector容器用法详解
- STL之vector容器用法详解
- STL之二:vector容器用法详解
- STL之二:vector容器用法详解
- STL之vector向量容器常用方法
- stl vector容器用法
- STL-vector容器用法
- STL--vector容器用法
- STL容器之vector
- javaScript 高级程序设计 第2章 在HTML中使用JavaScript
- NUMBER BASE CONVERSION POJ 1220 进制转换模板
- java中的强、软、弱、虚四种引用
- sdut 数据结构实验之栈四:括号匹配
- 【MySql】关系型数据库介绍一
- STL常用容器用法之——vector
- 基于hibernate的BaseDAO接口
- AI开发实战5-文本输入框(TextBox)的定制2
- 剑指offer_数组---替换空格
- Three.js使用局部纹理更新
- h5笔记
- 概率论与数理统计基本概念
- KHL 004 11-计算机-本职-前台 CSS3 多列布局
- Linux下的系统编程与网络编程(一 Linux基础)