标准库vector类型简介
来源:互联网 发布:上瘾网络剧见面会视频 编辑:程序博客网 时间:2024/04/30 21:29
一、vector类型是什么
在C语言中,我们可以通过数组定义普通类型数据或自定义类型数据的集合。数组的缺点很明显,程序员必须提前规定数组的大小,这可能导致两种结果:长度太小导致不够用,或者长度太大导致空间浪费。如果要实现可以动态增长的数组,我们就需要使用一些数据结构方面的知识,如链表。
C++标准库提供了vector类型,通过vector类型,我们可以很方便的定义大小可以动态改变的数据集合。
二、vector类型的使用
1. 定义vector对象
vector<int> v1;//定义vector类型的对象v1,v1默认为空,保存int类型元素vector<int>v2(v1);//定义vector类型的对象v2,用v1来初始化vector<int> v3(3);//v3保存了3个值为0的int元素vector<string> v4(3);//v4保存了3个值为空的string元素vector<T> v5(n,i);//v5保存了n个值为i的元素
2. 操作vector对象
vector对象的简单使用如下:
v.push_back(t) 在v末尾添加tv.pop_back() 删除v末尾的元素v[n] 返回v中n处的元素
#include <iostream>#include <vector>using namespace std;//using std::vector;int main(void){vector<int> myVector;//动态添加元素for (vector<int>::size_type i = 0; i != 3 ;i++){myVector.push_back(i);}//下标操作for (vector<int>::size_type i = 0; i != myVector.size();i++){cout<<myVector[i]<<endl;}myVector.pop_back();cout<<endl<<"After pop_back():"<<endl;for (vector<int>::size_type i = 0; i != myVector.size();i++){cout<<myVector[i]<<endl;}}
三、使用iterator访问vector的元素
1、iterator类型
对vector的元素进行访问除了使用下标外,还可以使用iterator(迭代器)类型。iterator基本用法如下:
vector<int>::iterator myIter; //定义iterator类型变量myIter = myVector.begin(); //myIter指向myVector第一个元素cout<<*myIter<<endl; //解引用操作myIter++; //myIter指向myVector第二个元素myIter = myVector.end(); //myIter指向myVector最后一个元素的下一个cout<<*myIter<<endl; //解引用操作会出现运行时错误
2、使用iterator访问vector元素
在上面的程序末尾添加如下几行,运行结果如下。可以发现,使用inser()向vector插入元素时,元素插入在了迭代器指向元素的位置,而插入之前的元素顺序后移。
vector<int>::iterator myIter;myIter = myVector.begin();//插入元素myVector.insert(myIter,5);cout<<endl<<"Afer Insert:"<<endl;for (vector<int>::iterator it = myVector.begin();it != myVector.end();it++){cout<<*it<<endl;}
3、const_iterator和const iterator
vector<int>::const_iterator myIter;
const vector<int>::iterator myIter;
这两者有什么区别呢?const_iterator定义的迭代器不能改变它所指向元素的值,而迭代器自身可以改变,即可以指向不同的元素;而const iterator用来定义常量迭代器,它自身不能改变,即只能指向一个元素,而迭代器指向元素的值可以改变。
vector<int>::const_iterator myConstIter1;myConstIter1 = myVector.begin();myConstIter1++;//正确,可以指向不同的元素*myConstIter1 = 1;//错误,指向的元素的值不能改变const vector<int>::iterator myConstIter2 = myVector.begin();*myConstIter2 = 1;//正确,指向的元素的值可以改变myConstIter2++;//错误,只能指向固定的元素
0 0
- 标准库vector类型简介
- 标准库vector类型
- 标准库vector类型
- 标准库vector类型
- 标准库vector类型
- 标准库Vector类型
- 标准库vector类型
- 标准库 vector 类型
- 标准库vector类型
- 标准库类型vector
- 标准库vector类型
- 标准库类型<vector>
- 标准库vector类型
- 标准库类型vector
- 标准库 vector 类型
- 标准库类型vector
- 标准库类型vector
- 标准库 vector 类型
- [leetcode] Permutations
- python 格式化时间字符串
- 用Python让树莓派“说话”
- 版本控制系统概述
- 鼠标悬浮时菜单效果
- 标准库vector类型简介
- mobiscroll 触屏日期插件
- Android中Bitmap, Drawable, Byte,ID之间的转化
- 关于读取工程根目录下的文件的方法
- 在Mac中显示隐藏文件
- linux平台总线驱动设备模型之点亮LED
- Vmware虚拟机进入BIOS方法
- 帝国cms选取两个表的集合,按某字段排序
- 0020 Java中equals()和hashCode()详解【基础】