如何迭代变量?

时间:2016-07-22 08:02:01

标签: c++ iteration

如果我有代码:

T a;
T b;
T c;
// ...
T z;

如何在不创建std::vector<T&>的情况下迭代它们?

任何漂亮的解决方案,如(伪):

for (auto& it : [a, b, c, d, e, f]) {
    // ...
}

(没有副本。)

2 个答案:

答案 0 :(得分:10)

for (auto& var : {std::ref(a), std::ref(b), std::ref(c), std::ref(d), std::ref(e), std::ref(f)}) {
    // ...
}

应该做的工作。

答案 1 :(得分:2)

如果您不想实际修改“变量”,那么您可以执行类似

的操作
// TODO: Put your own variables here, in the order you want them
auto variables = { a, b, c, .... };

// Concatenate all strings
std::string result = std::accumulate(std::begin(variables), std::end(variables), "",
    [](std::string const& first, std::string const& second)
    {
        return first + ' ' + second;  // To add spacing
    });

请注意,这要求所有“变量”具有相同的类型(std::string)。如果您的变量不是字符串,则可以使用std::to_string在第一步中转换它们。