教你优雅地认识STL vector
本标题有严重的标题党倾向!
文章目录
- vector是什么?
- vector中的常见操作有什么?
- 初始化vector对象
- 添加元素
- 尾部添加
- 随意添加
- 访问元素
- 访问范围内任意值
- 访问首尾
- 起始地址和终止地址
- 获得长度
- 优雅的高端操作
- 遍历vector
- 方案一
- 方案二
- 方案三
- 删除指定元素
- 排序
- 正序
- 逆序
- 查找某一元素位置
vector是什么?
vector
是STL中常用的容器,中文名是向量容器
,可以理解成一个可以添加或删除元素的动态数组
(P.S.自己使用类实现一个也不难)
需要#include<vector>
vector中的常见操作有什么?
初始化vector对象
vector<int> myVector;
如果想要指定初始长度
vector<int> myVector(20);
如果想要指定长度并初始化
int len;
int primal;
vector<int> myVector(len,primal);
添加元素
尾部添加
myVector.push_back(10) //会自动给vector添加内存
随意添加
如果myVector通过初始化
vector<int> myVector(20);
或者调用 reserve()
myVector.reserve(20);
可对范围内的元素进行修改
myVector[12]=2333;
访问元素
访问范围内任意值
myVector[n];
访问首尾
myVector.front();
myVector.back();
起始地址和终止地址
myVector.start();
myVector.end();
值得注意的是end()
是最后一个元素的下一个元素的地址,也就是说*end()
无意义。
获得长度
myVector.size();
优雅的高端操作
遍历vector
方案一
for(int i=0;i<myVector.size();i++)
{cout<<myVector[i]<<" ";
}
方案二
for (auto i = myVector.begin(); i !=myVector.end() ; i++){cout << *i << " ";}
方案三
for (auto i : myVector){cout << i<<" ";}
以下均需要借助<algorithm>
库
删除指定元素
#include <algorithm>
#define vectorMove(V,x) (V.erase(remove(V.begin(), V.end(),x), V.end()))
是的,没错,毫无疑问,仅需这一行
解释一下:
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
vector.erase()
的作用是删除某个位置position
或一段区域[begin, end)左闭右开
中的元素,其返回值是被删除元素的下一个元素的地址。
template <class ForwardIterator, class T>
ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val);
作用是将first,end
范围内,值为val
的所有数移动到迭代器的末尾,视为无效数据,但不改变迭代器的size()
,返回值为第一个无效数据的位置。
因此我们可以解释如何使用上面的一行代码优雅地删除指定元素了。
先使用remove()
将值为x
的数据移植末尾,并且返回第一个无效数据的位置,使用erase
将所有无效数据删除。
排序
正序
#include<algorithm>
sort(myVector.begin(),myVector.end());
逆序
sort(myVector.rbegin(),myVector.rend());
查找某一元素位置
find(myVector.begin(),myVector.end(),x);
返回第一个x所在的地址
教你优雅地认识STL vector相关推荐
- C++ stl vector介绍
转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...
- STL vector的几种清空容器(删除)办法
1.为什么需要主动释放vector内存 来自 <https://blog.csdn.net/hellokandy/article/details/78500067> vector其中一个特 ...
- STL vector 容器介绍
介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...
- STL vector的erase操作问题
STL vector的erase操作问题 一老大说CSDN上有篇博文("关于STL vector的erase操作",地址是:http://blog.csdn.net/tingya/ ...
- STL vector容器
介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用. ...
- stl vector 函数_在C ++ STL中使用vector :: begin()和vector :: end()函数打印矢量的所有元素...
stl vector 函数 打印向量的所有元素 (Printing all elements of a vector) To print all elements of a vector, we ca ...
- stl vector 函数_vector :: at()函数以及C ++ STL中的示例
stl vector 函数 C ++ vector :: at()函数 (C++ vector::at() function) vector::at() is a library function o ...
- stl vector 函数_vector :: crend()函数以及C ++ STL中的示例
stl vector 函数 C ++ vector :: crend()函数 (C++ vector::crend() function) vector::crend() is a library f ...
- stl vector 函数_vector :: pop_back()函数以及C ++ STL中的示例
stl vector 函数 C ++ vector :: pop_back()函数 (C++ vector::pop_back() function) vector::pop_back() is a ...
最新文章
- eclipse配置maven及查看对应maven配置文件settings.xml的地方
- 那些年Android黑科技①:只要活着,就有希望
- 构造 Codeforces Round #275 (Div. 2) C. Diverse Permutation
- nginx源码初读(1)--让烦恼从数据结构开始(ngx_cdecl/ngx_int/ngx_log)
- python数字倒序
- ASP.Net Core Razor 部署AdminLTE框架
- 微软2022服务器,​微软公开地分享了即将发布的WindowsServer 2022的特性
- python文件下载速度 装饰器_python使用装饰器对文件进行读写操作'及遍历文件目录...
- CentOS图形界面和命令行切换
- ClickHouse:存储A股数据实践
- 非均匀采样重建 matlab,对非均匀采样信号进行重采样
- 万能口令生成器,一键批量生成。支持阿里系全家用域名生成淘口令,店铺链接,商品链接,手淘群,支付宝领红包等等...
- linux ext4 格式化工具,ext4格式化软件 mkfs.ext4 快速格式化
- Android吃透inflate方法(二)
- 水管工游戏(啊哈算法)
- java语言学术报告厅,文理学院举办java编程语言公开课
- Avoiding 16 Common OpenGL Pitfalls(避免 16 个常见的 OpenGL 陷阱)
- 花木兰荣耀典藏皮肤特效一览 花木兰九霄神辉值得入手吗
- vscode 更换markdown样式的方法(任意样式都行),并推荐我自用样式(参考于Pie)。
- 【小程序自动化Minium】二、元素定位-Page接口中的 get_element() 与 get_elements()