大白糖奶兔的Blog
大白糖奶兔的Blog
STL-迭代器

分类

  • 输出输出迭代器

输出迭代器

只能一次一个向前读取元素,按此顺序一个个传回元素值

表达式功能表述
*iter读取实际元素
iter->member读取实际元素的成员(有的话)
++iter向前步进(传回新位置)
iter++向前步进(传回旧位置)
iter1 == iter2判断两个迭代器是否相同
iter 1 != iter2 判断两个迭代器是否不同
type(iter)复制迭代器

输入迭代器

表达式功能描述
*iter = value将元素写入迭代器所在位置
++iter 向前步进(传回新位置)
iter++ 向前步进(传回旧位置)
type(iter) 复制迭代器
  • 前向迭代器

是输入迭代器和输出迭代器的结合,能多次指向同一群集中的同一元素,并能多次处理同一元素

  • 双向迭代器

在前向迭代器的基础上增加了回头遍历的能力,支持递减操作符,一步一步的后退操作

表达式功能描述
++iter 向前步进(传回新位置)
iter++ 向前步进(传回旧位置)
–iter 向后步进(传回新位置)
iter– 向后步进(传回旧位置)
  • 任意存取迭代器

在双向迭代器的基础上再增加随机存取能力,因此它必须提供“迭代器算术运算”

表达式功能描述
iter+i在iter位+i后的迭代器
iter-i 在iter位-i后的迭代器
iter[i]返回iter位偏离i位后的元素引用
iter < iter1如果iter位置在iter1前,返回true
iter <= iter1 如果iter位置在iter1前或同一位置,返回true
iter > iter1 如果iter位置在iter1后,返回true
iter >= iter1 如果iter位置在iter1后或同一位置,返回true
容器支持迭代器类别容器 支持迭代器类别
vector任意迭代器set双向迭代器
deque任意接待器map双向迭代器
list双向迭代器multiset双向迭代器
stack不支持multimap双向迭代器
queue不支持
priority_queue不支持

vector遍历

#include<vector>
#include<iostream>
using namespace std;
int main() {
	int a[] = { 1 , 2 , 3 , 4 };
	vector<int> v(a, a + 4);
	for (unsigned i = 0; i < v.size(); i++)
		cout << v[i] << " ";
	cout << endl;
	//迭代器遍历
	for (vector<int>::iterator iter = v.begin(); iter != v.end(); iter++)
	{
		cout << *iter << " ";
	}
	return 0;
}

发表评论

textsms
account_circle
email

大白糖奶兔的Blog

STL-迭代器
分类 输出输出迭代器 输出迭代器 只能一次一个向前读取元素,按此顺序一个个传回元素值 表达式功能表述*iter读取实际元素iter->member读取实际元素的成员(有的话)++iter向…
扫描二维码继续阅读
2020-10-15
Title - Artist
0:00