首页 > 解决方案 > c++ 如何在没有显式创建可迭代容器的情况下迭代对象集合

问题描述

我想循环遍历固定数量的对象(所有相同类型),而不必首先显式创建一个以这些对象为成员的可迭代容器,例如:

object_type a, b, c; 
// do sth with objects a, b, c

for (auto &x in {a, b, c}) 
{ // do }; // wish: be able to loop over objects via on-the-fly-container {a, b, c}

问题:

  1. 我怎样才能以最简洁/优雅的方式实现示例中的那种循环?

  2. 通常,具有相同类型的成员:可以创建隐式定义的向量吗?元组?有任何容器吗?

谢谢

标签: c++

解决方案


您可以只遍历包含对象的初始化列表:

for(auto o : {a, b, c})
  // ...

这是一个演示

您也可以编写auto &o,但请注意,这不是o对实际对象、和的引用,因此您将无法修改它们。如果你想这样做,你可以这样写:abc

for(auto *o : {&a, &b, &c})
   // *o is the object

在哪里迭代对象的地址。

这是一个演示


推荐阅读