C访问向量内的对元素

新手上路,请多包涵

我有一个向量,每个元素都是一对。我对语法感到困惑。有人可以告诉我如何遍历每个向量,然后依次遍历 pair 的每个元素来访问该类。

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

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

感谢你的帮助。谢谢

原文由 Romaan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 477
2 个回答

这是一个示例。请注意,我使用 typedef 为那个又长又丑的类型名取别名:

 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;
}

原文由 John Dibling 发布,翻译遵循 CC BY-SA 3.0 许可协议

这应该可以工作(假设你有一个兼容 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 代替。

原文由 Benj 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题