C ++访问vector中的pair元素

时间:2012-10-08 16:01:40

标签: c++ vector containers

我有一个向量,每个元素都是一对。我对语法很困惑。有人可以告诉我如何遍历每个向量,然后依次对每个元素进行访问。

    std::vector<std::pair<MyClass *, MyClass *>> VectorOfPairs;

另外,请注意,我将在函数之间传递值,因此VectorOfPairs将通过我的代码的某些位置的* VectorOfPairs指针传递。

感谢您的帮助。感谢

3 个答案:

答案 0 :(得分:11)

这应该有效(假设你有一个C ++ 11兼容的编译器)

for ( auto it = VectorOfPairs.begin(); it != VectorOfPairs.end(); it++ )
{
   // To get hold of the class pointers:
   auto pClass1 = it->first;
   auto pClass2 = it->second;
}

如果您没有auto,则必须使用std::vector<std::pair<MyClass *, MyClass *>>::iterator

答案 1 :(得分:8)

这是一个示例。注意我使用typedef来替换那个冗长,丑陋的typename:

typedef std::vector<std::pair<MyClass*, MyClass*> > MyClassPairs;

for( MyClassPairs::iterator it = VectorOfPairs.begin(); it != VectorOfPairs.end(); ++it )
{
  MyClass* p_a = it->first;
  MyClass* p_b = it->second;
}

答案 2 :(得分:5)

如果您有符合C ++ 11标准的编译器,则另一个选项是使用基于范围的for循环

for( auto const& v : VectorOfPairs ) {
  // v is a reference to a vector element
  v.first->foo();
  v.second->bar();
}