3-3 vector 和 迭代器
1 vector
容器vector可以理解为变长数组,它里面放的是相同类型的元素。
vector<int> vec={1,2,3,4};//拷贝构造
vector<string> vec_str{"abc","def"};//直接构造
for(string str : vec_str){
cout<<str;
}
使用vector的好处主要在于它有大量的函数可供使用,例如
vector<int> vec;
for(int i=0;i<100;i++){
vec.push_back(i);//push_back()//实现向尾部插入一个数
}
cout<<vec.size()<<endl;
cout<<vec[66];
//输出
100
66
2 迭代器
当我们在用到map或者set这样的无序容器时可能无法通过索引去获取元素,那么就需要迭代器来获取。首先看这样一段程序
vector<int> vec{1,2,3,4};
for(auto it=vec.begin();it!=vec.end();it++){
cout<<*it<<endl;
}
//输出
1
2
3
4
首先介绍auto,它会根据不同迭代器的类型来改变,在这里它的表示等价于vector<int>::iterator.定义的it有点像指针一样,我们要想得到它的值要用取值运算符*来得到。另外要注意的一点是end返回的是最后一个元素之后一个位置。
我们把迭代器理解为指针一样的存在,那么它的使用也和指针会有许多相似,比如现在我们想获取字符串类型每一个元素的大小
vector<string> vec_str{"hello","world"};
for(auto it=vec.begin();it!=vec.end();it++){
cout<<(*it).size()<<endl;//或者是it->size()也可以
}
3-3 vector 和 迭代器的更多相关文章
- 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器
小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...
- C++标准库类型vector及迭代器iterator简介
Vector是C++标准库类型,称为容器,一个容器中的所有对象必须是同一种类型的.与数组相比,其最大的优点就是动态增长.Vector是一个类模板,并不是数据类型,而vector<int>和 ...
- Javase之集合体系(2)之List及其子类ArrayList,LinkedList与Vector及其迭代器知识
集合体系之List及其子类ArrayList,LinkedList与Vector及其迭代器知识 List(接口) 特点:有序(存储与取出顺序相同),可重复 List子类特点: ArrayList: ...
- 把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 ...
- C++ Primer 有感(标准库vector及迭代器)
vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vecto ...
- vector map迭代器失效解决方案
vector : iter = container.erase(iter); //erase的返回值是删除元素下一个元素的迭代器 vector<int>::iterator it = ...
- C++标准库vector以及迭代器
今天看C++的书,出现了一个新的概念,容器vector以及容器迭代器. vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存. ...
- C++标准库vector及迭代器
vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vecto ...
- 在C++11编译环境中,简单自测了一下C++标准库中的string/vector和迭代器,记录一下
#include <iostream> #include <vector> using namespace std; int main() { //////////////// ...
- 笔记:C++学习之旅 ---string 类、vector和迭代器
string 类 #include <iostream> #include <string> using namespace std; int main() { ...
随机推荐
- Petals
------------恢复内容开始------------ 打开发现一堆地址冒红 滑倒后面发现E8,根据经验应该是花指令考点 然后D-->nop-->C-->P得到正常结果 然后第 ...
- Dom 的理解和操作
dom 文本对象模型 12种节点类型 一.node类型 js中所有节点类型都继承自node类型 每个节点都有一个nodeType属性,表明节点类型:判断节点类型,if(somenode.nodeTy ...
- AI歌姬,C位出道,基于PaddleHub/Diffsinger实现音频歌声合成操作(Python3.10)
懂乐理的音乐专业人士可以通过写乐谱并通过乐器演奏来展示他们的音乐创意和构思,但不识谱的素人如果也想跨界玩儿音乐,那么门槛儿就有点高了.但随着人工智能技术的快速迭代,现在任何一个人都可以成为" ...
- WPF --- 如何以Binding方式隐藏DataGrid列
引言 如题,如何以Binding的方式动态隐藏DataGrid列? 预想方案 像这样: 先在ViewModel创建数据源 People 和控制列隐藏的 IsVisibility,这里直接以 MainW ...
- 在.net中使用AutoMapper进行对象映射,对象相互转,简单方便
AutoMapper是一种对象映射工具,它可以帮助我们将不同类型的数据对象之间进行相互转换.在.NET中,我们可以使用AutoMapper库来简化数据对象之间的映射操作,从而提高代码的可读性和可维护性 ...
- 【结对作业】第一周 | 学习体会day06
初步做了app的页面 change作为mysql的关键字,不可以作为命名,否则报错 做了两条线路的中转 初步学习了frame标签,打算明天实现页面的部分切换
- 在WPF应用中使用GongSolutions.WPF.DragDrop实现列表集合控件的拖动处理
WPF应用中,控件本身也可以通过实现事件代码实现拖动的处理,不过如果我们使用GongSolutions.WPF.DragDrop来处理,事情会变得更加简单轻松,它支持很多控件的拖动处理,如ListBo ...
- 公司敏感数据被上传Github,吓得我赶紧改提交记录
大家好,我是小富- 说个事吧!最近公司发生了一个事故,有同事不小心把敏感数据上传到了GitHub上,结果被安全部门扫描出来了.这件事导致公司对所有员工进行了一次数据安全的培训.对于这个事我相信,有点工 ...
- Python 提取 Word 文档中的文本和图片
将内容从 Word 文档中提取出来可以方便我们对其进行其他操作,如将内容储存在数据库中.将内容导入到其他程序中.用于 AI 训练以及制作其他文档等.第三方库 Spire.Doc for Python ...
- 【Python微信机器人】第六篇:优化使用方式,可pip安装
优化内容 这篇不聊技术点,说一下优化后的Python机器人代码怎么使用,优化内容如下: 将hook库独立成一个库,发布到pypi,可使用pip安装 将微信相关的代码发布成另一个库,也可以pip安装 g ...