我有一个for循环,我需要循环遍历不同类型的数组,第一个是map<string,vector<string>>
,第二个是integer
数组。
实现这一点我做了:
struct {map<string,vector<string>>::iterator it; int i; } s;
int k = 0;
for ( s.it = m.begin(), s.i = 0; s.it != m.end(), s.i < size; s.i+=2)
{
while (k != integer_array[s.i] && k < size)
{
s.it++;
k++;
}
if (k == integer_array[s.i])
{
cout << s.it.first << endl; // this line does not complie
k = 0;
s.it = m.begin();
}
}
解释我试图做的事情: integer_array存储索引,并且我试图在存储在integer_array中的索引处打印映射值。 有什么建议吗?
答案 0 :(得分:1)
我猜你的问题出现在迭代器中。
而不是:
cout << s.it.first << endl;
尝试:
cout << s.it->first << endl;
原因是STL迭代器的行为类似于指针:如果要访问指向的值,则必须取消引用迭代器(通过运算符*或通过运算符 - >;)。
在当前的情况下,指向的值是std :: std :: string和std :: vector,你想要打印第一个std :: string。因此,您需要编写it->first
。