我有不同大小的 std::arrays,例如
std::array<int, 5> array_one;
std::array<int, 8> array_two;
std::array<int, 2> array_three;
主要类型始终相同(在此示例中为 int)。现在我必须遍历所有这些数组,为了用尽可能少的代码来做到这一点,我想我会将它们存储在例如一个数组并使用它来单独访问每个数组。
伪代码:
std::array array_wrapper = { array_one, array_two, array_three };
但这不会起作用,因为每个数组都有不同的大小。是否有任何存储类型可以用来“收集”所有数组以在之后单独迭代它们?
最佳答案
如果您只需要迭代,而不是将数组存储在一起,请使用 std::span
std::span<int> span[] = {array_one, array_two, array_three};
您也可以使用 std::views::join 将 View 展平for(int &i : span | std::views::join)
{
...
}
如果数组是常数,则std::span<int const> span[] = {array_one, array_two, array_three};
for(int const i : span | std::views::join)
{
...
}
关于c++ - 存储多个可变大小的 std 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69333938/