我卡在了 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/