输出迭代器
Coddy C++ 标准模板库 课程的第 15 课,共 23 课。
输出迭代器是一种用于修改容器中值的迭代器。它与输入迭代器恰好相反,执行的功能也相反。输出迭代器用于给序列中的元素赋值,但不能用于访问这些值。

如你所见,前向迭代器、双向迭代器 和随机访问迭代器都是有效的输出迭代器。
接下来,我们将学习输出迭代器的特性。
- 相等/不等运算符
与输入迭代器不同,输出迭代器之间不能进行相等比较。因此,使用==和!=运算符比较它们会导致错误。
A == B // 错误
A != B // 错误- 解引用
我们使用输入迭代器的解引用来访问迭代器所指向元素的值。对于输出迭代器,我们使用*运算符对迭代器进行解引用,从而可以给迭代器所指向的元素赋值。
*A = 10 // 用 * 解引用vector<int> numbers = {1, 2, 3, 4, 5};
vector<int>::iterator it;
for(it=numbers.begin(); it != numbers.end(); it++)
*it = 10;
for(it = numbers.begin(); it != numbers.end(); it++)
cout << *it << " ";Output:
10 10 10 10 10在上面的示例中,我们使用输出迭代器遍历了这个向量,并将每个元素的值都设为 10。
- 可递增
输出迭代器可以递增,递增后会指向序列中的下一个元素。我们使用++运算符来递增迭代器。
A++ // 后置自增运算符
++A // 前置自增运算符- 可交换
可以交换两个指向不同位置的迭代器。
输出迭代器的一个限制是,它可以用来给迭代器所指向的元素赋值,但不能访问该值。例如,你不能将元素的值存储到另一个变量中。
*A = x; // 有效
x = *A; // 无效挑战
中等输入一个数字 N,表示 vector 中元素的数量。接下来的 N 行中,每行给出一个数字。将所有数字存入 vector。之后,使用输出迭代器为每个元素赋值,使其值增加 1,并输出修改后的元素。
Input
5
10
20
30
40
50Output
11 21 31 41 51亲手试试
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> numbers;
vector<int>::iterator it;
// Enter your code here
for(it = ; it != numbers.end(); )
{
}
for(it = ; ; )
{
cout << /* Enter here */ << " ";
}
return 0;
}C++ 标准模板库中的所有课
自己练习: C++ 在线编译器