serna37's Library

Logo

C++ アルゴリズムとデータ構造のライブラリ

View the Project on GitHub serna37/library-cpp

:heavy_check_mark: 転置
(library/grid/transpose.hpp)

転置

できること

計算量

$O(HW)$

使い方

vector<vector<int>> T = transpose(G);

Verified with

Code

#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;
}
Back to top page