🎄 Qiita Advent Calendar 2024 🎄
この記事は,Qiita Advent Calendar 2024 の ひとりアドベントカレンダー by Hietan というカレンダーの2日目の記事です.
アウトプット力の強化を目的に,25日分すべて1人で書ききるというチャレンジをしています.是非他の記事もご覧ください.
注:以下では,using namespace std;
の記述がある前提でソースコードを記載しています.
みなさん,競技プログラミングはやっていますか?
競技プログラミングでは速度の速さから C++ が使われることが多いですが,vector の記述量が多くて大変です.
特に2次元配列を vector で作成するとき,デフォルトだと次のような記述になります.
vector<vector<int>> arr(i, vector<int>(j, 0));
なんとも長い...
vector
と3回も記述しています.
そこで,以下のクラスを作成して記述量を削減します.
template <typename T>
class V2 : public vector<vector<T>> {
public:
V2(int i, int j): vector<vector<T>>(i, vector<T>(j)) {}
V2(int i, int j, T x): vector<vector<T>>(i, vector<T>(j, x)) {}
};
これで,2次元配列を宣言するときは,
V2<int> arr(i, j, 0);
とてもシンプルになりました!
仕組みもコンストラクタを作成しているだけで非常にシンプルです.
これで vector
と大量に打つ手間を省けますね.