存储多个可变大小的 std 数组

Tro*_*nda 3 c++ c++20

我有不同大小的 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)