Menu
CoddyTech

输出迭代器

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; // 无效
challenge icon

挑战

中等

输入一个数字 N,表示 vector 中元素的数量。接下来的 N 行中,每行给出一个数字。将所有数字存入 vector。之后,使用输出迭代器为每个元素赋值,使其值增加 1,并输出修改后的元素。

 

Input
5
10
20
30
40
50
Output
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++ 在线编译器