为什么这段代码会给我一个错误?
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string k;
vector<string> f;
int main()
{
string k;
while (cin >> k) {
char l = '3';
cin >> k;
for (auto &v : k) {
if (v == 'e')
v = l;
if (v == 'i')
v = '1';
if ( v == 'z')
v = '2';
}
f.push_back(k);
}
auto r = f.begin();
auto s = f.end();
while (r != s) {
string j = f[r];
cout << j;
++r;
}
return 0;
}
我尝试编译它并多次编辑,但我总是得到这个错误。 所以我尝试使用不同类型的迭代器,但这不能做到更好。 有没有人有解决这个问题的建议? 它将是一个leet文本生成器
答案 0 :(得分:2)
您尝试使用迭代器并使用下标运算符,以两种不同的方式混合访问std::vector
中的元素。
如果你想使用下标运算符,你必须用向量中的有效索引来调用它,例如:
std::string s = v[1]; // get the second element of the vector
如果你想使用迭代器,你可以这样做:
auto it = v.begin();
std::string s = *it; // get the element referred by the iterator it
答案 1 :(得分:1)
由于r
是一个迭代器,你可以像指针一样使用它,而不是像数组索引一样。因此f[r]
应为*r
。
string j = *r;