如何使用 STL 翻转/反转二维数组的行或列

101*_*010 4 c++ arrays stl multidimensional-array c++11

我有一个任意类型的二维数组,维度N x M(即,T array[N][M];)例如,

我想翻转它的列,例如,

或其行,例如,

如何仅使用 STL 轻松完成此操作?

101*_*010 5

您只需使用std::reverse.

下面我定义了两个通用函数flip_columns,flip_rows它们将任意类型的二维数组作为输入,它们分别翻转/反转其列和行。

翻转/反转二维数组列

template<typename T, std::size_t N, std::size_t M>
void flip_columns(T (&arr)[N][M]) {
  std::for_each(std::begin(arr), std::end(arr),
                [](auto &i) {std::reverse(std::begin(i), std::end(i));});
}
Run Code Online (Sandbox Code Playgroud)

翻转/反转二维数组行

template<typename T, std::size_t N, std::size_t M>
void flip_rows(T (&arr)[N][M]) {
  std::reverse(std::begin(arr), std::end(arr));
}
Run Code Online (Sandbox Code Playgroud)

现场演示