【STL】vector小结
来源:互联网 发布:pdf锐化软件 编辑:程序博客网 时间:2024/05/22 14:31
vector是最简单的序列式容器,支持随机访问元素,类似一个动态数组。使用vector时应当包含头文件< vector >.
定义与初始化
vector<int> vt;vt.reserve(5); //在初始化之前应当先设置容器的容量vt.push_back(1); //使用push_back()函数向尾部添加元素vt.push_back(2);vt.push_back(3);
大小与容量
vector的大小是指容器中现有的元素数量,由函数size()的返回值获取,函数resize()可以修改容器大小。
vector的容量是指容器实际可以容纳的元素数量,由函数capacity()的返回值获取,函数max_size()可以返回容器可以容纳的最大元素数量。
访问元素
vector容器对元素的操作方法主要有如下几种方式:
vector<double> vt;vt[index]; //类似数组下标的用法,返回引用,不可用这种方式初始化vt.at(index); //与方括号的使用方式类似,返回引用vt.front(); //返回第一个元素vt.back(); //返回最后一个元素
迭代器相关函数
下面的函数均返回一个迭代器。
vt.begin(); //指向第一个元素vt.end(); //指向最后元素的下一个位置vt.rbegin(); //指向逆向迭代的第一个元素vt.rend(); //指向逆向迭代最后元素的下一个位置
遍历容器
可以使用at()函数实现遍历, 也可以使用迭代器来实现。
//使用at()函数遍历,也可用[]实现vector<int> vt;for(int i = 0; i < vt.size(); i++){ cout<<vt.at(i)<<endl;}//使用迭代器实现遍历vector<int>::iterator it;for(it = vt.begin(); it != vt.end(); it++){ cout<<*it<<endl;}//使用逆向迭代器实现逆向遍历vetor<int>::reverse_iterator it2;for(it2 = vt.rbegin(); it != vt.rend(); it2++){ cout<<*it2<<endl;}
另外可以通过使用算法头文件< algorithm >中的for_each()函数实现类似遍历个功能。
#include<algorithm>void out(int &n){ cout<<n<<endl;}vector<int> vt;for_each(vt1.begin(), vt1.end(), out); //正向遍历for_each(vt1.rbegin(), vt1.rend(), out); //逆向遍历
插入
可以使用push_back()函数向末尾添加元素,也可以使用insert()函数像任意位置插入元素。
vector<int> vt; vector<int>::iterator it; vt.reserve(10); vt.push_back(1); vt.push_back(2); vt.insert(vt.begin(), -1); //向迭代器所指位置之后插入一个元素 vt.insert(vt.end(), 2, 0); //向迭代器所指位置之后插入多个相同个元素 //注意迭代器it在这里的使用方式 it = vt.begin(); vt.insert(it+2, 2, 3); //向迭代器所指位置之后插入多个相同个元素 for(int i = 0; i < vt.size(); i++) cout<<vt[i]<<' '; cout<<endl;
输出结果
-1 1 3 3 2 0 0
删除
注意erase()函数返回一个迭代器,指向被删除元素后面的位置
vector<int> vt;vector<int>::iterator it;it = vt.begin();vt.pop_back(); //删除最后一个元素it = vt.erase(it+2); //删除迭代器所指的元素vt.erase(it, vt.end()); //删除指定范围内的元素vt.clear(); //删除全部元素
阅读全文
0 0
- STL-vector用法小结
- STL--vector 小结
- STL vector list 小结
- 【STL】vector小结
- STL vector
- STL vector
- stl vector
- STL vector
- STL vector
- stl-vector
- STL--vector
- STL Vector
- stl vector
- STL:vector
- STL---vector
- STL-vector
- Stl--Vector
- Stl--Vector
- 文件的存取
- HDU-2577 How to Type (线性状态dp)
- 数据结构--单向链表2
- 转载logback简要用法 原文地址https://www.cnblogs.com/warking/p/5710303.html
- Kafka
- 【STL】vector小结
- HDU-1241 Oil Deposits 【dfs】
- hdu 2141
- React list this.props.children
- 29-多线程(线程间通信-多生产者多消费者问题-JDK1.5新特性-Condition).1 2 31-多线程(线程间通信-多生产者多消费者问题-JDK1.5解决办法-范例). 1 2
- PHP数组以中文首字母来排序
- 编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出
- Ubuntu 16.04部署FTP 安装vsftpd
- Hadoop实战(8)_CDH添加Hive服务及Hive基础