小记:iterator && auto
小记:iterator && auto
iterator
众所周知,我们有一种强大的东西,它叫做STL,比如queue
、vector
、set
、map
、multimap
、deque
等。
如果我们想遍历整个空间,但是我们发现有些STL中没有operator[]
,也就是说无法通过正常的...[......]
来访问所有元素。所以我们引入了这个东西——iterator。
它的标准形式为*::iterator **
其中,*
是你的定义类型,**
是你的迭代器名称。
那么怎么食用呢?如下是一个最简单的板子:
#include <bits/stdc++.h>
using namespace std;
vector<int>::iterator it;
vector<int> vec;
int main(){
for (int i = 0; i ^ 10; i++)
vec.push_back(i);
for (it = vec.begin(); it != vec.end(); it++)
cout << *it << ' ';
}
其它的妙用,就大家来使用叭。。。。。。
auto
你是否想根据后面的变量让电脑自动定义它的类型?那么你就找对了。
auto
就是用来干这个的。
比如,刚才的代码完全可以改为这样:
#include <bits/stdc++.h>
using namespace std;
vector<int> vec;
int main(){
for (auto i = 0; i ^ 10; i++)
vec.push_back(i);
for (auto it = vec.begin(); it != vec.end(); it++)
cout << *it << ' ';
}
你不用管it
到底是啥类型,定义它就好了。
需要注意的是,auto
定义变量时,需要直接赋东西给变量。。。。。。