C++标准模板库(STL)之 vector
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++标准模板库(STL)之 vector,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2188字,纯文字阅读大概需要4分钟。
内容图文
![C++标准模板库(STL)之 vector](/upload/InfoBanner/zyjiaocheng/610/d7eb8932ce2a402bb2abe3d68cc58477.jpg)
一、vector的常见用法详解
1.vector的定义
头文件:#include<vector>
单独定义一个vector:
vector<typename> name;
注:如果typename也是一个STL容器,定义的时候要记得在>>符号之间加上空格,因为一些使用C++11之前标准的编译器会把它视为移位操作,导致编译错误。
如果typename是vector,就是下面的这样定义:
vector<vector<int> > name; //>>之间要加空格
例子:
vector<int> name;
vector<double> name;
vector<char> name;
vector<node> name;
定义vector二维数组:
vector<typename> Arrayname[arraySize];
例如:
vector<int> vi[100];
这样Arrayname[0]~Arrayname[arraySize-1]中每一个都是一个vector容器。
2.vector容器内元素的访问
(1)通过下标访问
vector[index] 即可访问
(2)通过迭代器访问
迭代器(iterator)可以理解为一种类似指针的东西,其定义为:
vector<typename>::iterator it
这样it就是一个vector<typename>::iterator 型的变量。
例子:
vector<int>::iterator it;
vector<double>::iterator it;
这样就定义了迭代器it,并且可以通过*it来访问vector里的元素。
例如:
vector<int> vi;
for(int i=1;i<=5;i++){ //循环完毕后vi中元素为1 2 3 4 5
vi.push_back(i); //push_back(i) 在vi的末尾添加元素i,即依次添加1 2 3 4 5
}
可以通过类似下标和指针访问数组的方式访问容器内的元素
#include<stdio.h> #include<vector> using namespace std; int main(){ vector<int> vi; for(int i=0;i<=5;i++){ vi.push_back(i); } //vi.begin()为取首元素地址,而it指向这个地址 vector<int>::iterator it=vi.begin(); for(int i=0;i<5;i++){ printf("%d ",*(it+i));//输出vi[i]; } return 0; }
输出结果:1 2 3 4 5
其中 vi[i]和*(vi.begin()+i)是等价的
end()函数,end()并不是取vi的尾元素地址,而是取尾元素地址的下一个地址,end()作为迭代器末尾标志,不存储任何元素。
例如:
for(vector<int>::iterator it=vi.begin();it!=vi.end();it++){ printf("%d ",*it); }
3.vector常用函数实例解析
(1)push_back()
push_back(x)就是在vector后面添加一个元素x,时间复杂度O(1)。
(2)pop_back()
pop_back() 用以删除vector的尾元素,时间复杂度为O(1)。
(3)size()
size()用来获得vector中元素的个数,时间复杂度O(1)。
(4)clear()
clear()用来清空vector中的所有元素,时间复杂度O(N)。
(5)insert()
insert(it,x)用来向vector的任意迭代器it处插入元素x,时间复杂度O(N)。
(6)erase()
erase()有两种用法:删除单个元素、删除一个区间内的所有元素,时间复杂度O(N)。
4.vector的常见用途
(1)存储数据
(2)用邻接表存储图
内容总结
以上是互联网集市为您收集整理的C++标准模板库(STL)之 vector全部内容,希望文章能够帮你解决C++标准模板库(STL)之 vector所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。