迭代向量对,并访问第一个和第二个元素

时间:2019-04-13 15:03:48

标签: c++ vector iterator std-pair

我正在尝试遍历向量对并访问第一个和第二个元素。

我不能使用自动,所以我需要使用迭代器。

  for (list<string>::const_iterator it = dest.begin(); it != dest.end(); ++it)
  {
    for (vector< pair < string, string > >::iterator it2 = class1.begin(); it2 = class1.end(); ++it2)
    {
      if (it == it2.first)
        cout << it2.second;
    }
  }

我不断收到错误消息:

  

没有名字优先的成员。

我尝试过:it2->首先,it2.first和(* it2).first。

为什么不起作用?

2 个答案:

答案 0 :(得分:1)

您正在尝试将迭代器与字符串进行比较。这不仅涉及取消引用it2的语法,还必须取消引用it。正确的语法是

if (*it == it2->first)

通过打错字的方式,您写的是it2 = class1.end(),而不是it2 != class1.end()

答案 1 :(得分:0)

更改此:

if (it == it2.first)

对此:

if (*it == it2->first)

因为it遍历字符串向量,所以您需要取消引用它以获取实际的字符串。与it2类似,此处代替使用*.。一起使用->即可简化操作。