for循环使用不同类型的c ++

时间:2014-04-13 11:25:39

标签: c++ loops for-loop

我有一个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中的索引处打印映射值。 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我猜你的问题出现在迭代器中。

而不是:

    cout << s.it.first << endl;

尝试:

    cout << s.it->first << endl;

原因是STL迭代器的行为类似于指针:如果要访问指向的值,则必须取消引用迭代器(通过运算符*或通过运算符 - >;)。

在当前的情况下,指向的值是std :: std :: string和std :: vector,你想要打印第一个std :: string。因此,您需要编写it->first