C++ アルゴリズムとデータ構造のライブラリ
#include "library/grid/transpose.hpp"$O(HW)$
vector<vector<int>> T = transpose(G);
#pragma once
template <typename T> vector<vector<T>> transpose(const vector<vector<T>> &G) {
int H = G.size(), W = G[0].size();
vector<vector<T>> _G(W, vector<T>(H));
for (int i = 0; i < H; ++i) {
for (int j = 0; j < W; ++j) {
_G[j][i] = G[i][j];
}
}
return _G;
}#line 2 "library/grid/transpose.hpp"
template <typename T> vector<vector<T>> transpose(const vector<vector<T>> &G) {
int H = G.size(), W = G[0].size();
vector<vector<T>> _G(W, vector<T>(H));
for (int i = 0; i < H; ++i) {
for (int j = 0; j < W; ++j) {
_G[j][i] = G[i][j];
}
}
return _G;
}