我有不同大小的 std::arrays,例如
std::array<int, 5> array_one;
std::array<int, 8> array_two;
std::array<int, 2> array_three;
Run Code Online (Sandbox Code Playgroud)
主要类型始终相同(本例中为 int)。
现在我必须迭代所有这些数组,为了用尽可能少的代码来做到这一点,我想我应该将它们存储在一个数组中,并使用它单独访问每个数组。
伪代码:
std::array array_wrapper = { array_one, array_two, array_three };
Run Code Online (Sandbox Code Playgroud)
但这是行不通的,因为每个数组都有不同的大小。
是否有任何存储类型可以用来“收集”所有数组以便随后单独迭代它们?
yie*_*uck 10
如果您只需要迭代,而不是将数组存储在一起,请使用 std::span
std::span<int> span[] = {array_one, array_two, array_three};
Run Code Online (Sandbox Code Playgroud)
您还可以使用 std::views::join 展平视图
for(int &i : span | std::views::join)
{
...
}
Run Code Online (Sandbox Code Playgroud)
如果数组是常量,那么
std::span<int const> span[] = {array_one, array_two, array_three};
for(int const i : span | std::views::join)
{
...
}
Run Code Online (Sandbox Code Playgroud)