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 和 迭代器的更多相关文章

  1. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  2. C++标准库类型vector及迭代器iterator简介

    Vector是C++标准库类型,称为容器,一个容器中的所有对象必须是同一种类型的.与数组相比,其最大的优点就是动态增长.Vector是一个类模板,并不是数据类型,而vector<int>和 ...

  3. Javase之集合体系(2)之List及其子类ArrayList,LinkedList与Vector及其迭代器知识

    集合体系之List及其子类ArrayList,LinkedList与Vector及其迭代器知识 List(接口) 特点:有序(存储与取出顺序相同),可重复 List子类特点: ​ ArrayList: ...

  4. 把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 ...

  5. C++ Primer 有感(标准库vector及迭代器)

    vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vecto ...

  6. vector map迭代器失效解决方案

    vector : iter = container.erase(iter);    //erase的返回值是删除元素下一个元素的迭代器 vector<int>::iterator it = ...

  7. C++标准库vector以及迭代器

    今天看C++的书,出现了一个新的概念,容器vector以及容器迭代器. vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存. ...

  8. C++标准库vector及迭代器

    vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vecto ...

  9. 在C++11编译环境中,简单自测了一下C++标准库中的string/vector和迭代器,记录一下

    #include <iostream> #include <vector> using namespace std; int main() { //////////////// ...

  10. 笔记:C++学习之旅 ---string 类、vector和迭代器

    string 类 #include <iostream> #include <string> using namespace std; int main() {         ...

随机推荐

  1. bad_python

    对着正确的pyc文件在010把题目文件的前缀改掉,然后在线反编译得到代码

  2. 线性表应用:魔术师发牌与拉丁(Latin)方阵(循环链表)

    题目描述: 有黑桃1到13,13张牌,成某种顺序,魔术师可以从1开始数 ,数1,背面朝上的13张牌第一张就是1,然后放到桌面上,然后从1开始数,把第一张放在所有牌下面,数到2,翻开,就是2,再放到桌子 ...

  3. Markdown & typora 速查

    Markdown & typora 速查 一级标题 # 一级标题 说明:#数量表示几级标题,如二级标题为"## 二级标题",支持到6级标题,#和标题中间有一个空格 typo ...

  4. css零散笔记——修改input样式input:-internal-autofill-selected背景色

    闲聊: 小颖项目中的登录页需将  input  背景色设为透明,小颖将 input  的背景色设置后,发现表单自动填充后还是会有背景色,然后发现 浏览器 自带了背景色: 效果图:           ...

  5. Educational Codeforces Round 56 (Rated for Div. 2) G题(线段树,曼哈顿距离)

    题目传送门 以二维为例,二维下两点间的曼哈顿距离最大值为\(max(|x_i-x_j| + |y_i-y_j|)\),可以通过枚举坐标符号正负来去掉绝对值.即\(max(x_i-x_j+y_i-y_j ...

  6. Pattern类和Matcher类的使用

    1.先看好数据源 先将一个String对象确定为程序要对其进行操作的数据源. String b="hello,good morning"; 2.建立Pattern类的对象 Stri ...

  7. serdes与PCIE的区别

    serdes和PCIE是两种非常常见的总线.因为PCIE也是差分信号传输,所以做硬件时比较难区别PCIE和serdes的具体差异点. 两者之间的区别主要表现在以下几点: 1.PCIE使用了SERDES ...

  8. [ABC265C] Belt Conveyor

    Problem Statement We have a grid with $H$ horizontal rows and $W$ vertical columns. $(i, j)$ denotes ...

  9. [ABC280G] Do Use Hexagon Grid 2

    Problem Statement A hexagonal cell is represented as $(i,j)$ with two integers $i$ and $j$. Cell $(i ...

  10. LeetCode227:基本计算器|| (栈、模拟)

    解题思路:两个双端队列模拟,一个存放操作数 a,另一个存放操作符 op,如果找到另一个操作数b,判断操作队列队尾是否是*/,是的话执行 a(*or/)b.遍历完字符串,如果操作符队列非空,说明还有+- ...