c++ - 使用迭代器遍历 vector 并修改内容

标签 c++ iterator

我卡在了 C++ primer 的一道练习题上。我必须使用迭代器循环遍历初始化的 vector 并对每个元素求平方,然后输出每个改变的元素。

#include <iostream>
#include <vector>


using std::vector; 
using std::cout;


int main()
{

    vector<int> v{1,2,3,4,5,6,7,8,9};
    vector<int>::iterator i;
    for (auto i =v.begin();  i != v.end(); i++)   
        i *= i;

    for (auto i =v.begin(); i < v.end; i++)     
        cout << i << " "; 
    cout << endl;
}

我不断收到这条消息:

[错误] 'operator<' 不匹配(操作数类型为 '__gnu_cxx::__normal_iterator >' 和 '')

最佳答案

首先,您忘记了此处的括号(在 v.end 之后):

    for (auto i =v.begin(); i < v.end; i++)     

接下来,在这两行中您定义了具有相同名称的变量,从而用另一个覆盖了一个:

    vector<int>::iterator i;
    for (auto i =v.begin();  i != v.end(); i++)   

你是什么意思:i *= i;

也许你提到了*i *= *i

最后,

    cout << i << " "; 

如果要输出值,试试

    cout << *i << " "; 

关于c++ - 使用迭代器遍历 vector 并修改内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57518354/

相关文章:

c++ - 数字类型之间的 C++ 转换到底是如何工作的?

c++ - 迭代时的 std::forward_list::push_front

c++ - 尝试获取 C++ switch 语句来识别空格、制表符等

c++ - 存储 std::deque 的迭代器

c++ - 我可以比较指向同一个容器的 2 个迭代器吗?

c++ - 所有文件的 mime 类型是什么

c++ - ComboBox with Checkboxes inside, C++ Qt, 选择/取消选择所有复选框

Python - 如果没有使用下一个默认值,为什么会初始化它?

c++ - 是否有不使用 ptrdiff_t 作为其 difference_type 的迭代器示例?

c++ - 如何创建一个类似于 `range` 的可迭代浮点对象?