使用迭代器遍历向量并修改内容

怎么样

我陷入了C ++入门中的一个实践问题。我必须使用迭代器来循环遍历初始化的向量并平方每个元素,然后输出每个更改的元素。

#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>'和'')

德米特里·库兹米诺夫(Dmitry Kuzminov)

首先,您忘记了此处的括号(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 << " "; 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章