はじめに
以前、 VScode に WSL を導入して C++ の AtCoder 向け環境を構築した。
ここで構築した C++ のバージョンは C++17 (gcc 11.1) であったのだが、実は2023年8月、約3年ぶりの AtCoder のジャッジアップデートが行われ、ジャッジサーバが C++20 と C++23 (gcc 12.2) に対応した。これにより、競プロで役立つ色々な機能が使用可能になったようである。
個人的には、コンテナのメンバ関数にcontains
関数が追加されたことと、Range
機能の追加が魅力だと思っている。
そんなわけで、今更ながらローカルの AtCoder コーディング環境の C++ のバージョンも C++23 に対応させていきたいと思う。
WSL 環境内の gcc と g++ のバージョンを更新する
VScode 起動後、作成した仮想環境内に入り、ターミナルで次のコマンドを順に実行して、gcc 12 と g++ 12 をインストールする。
$ sudo apt install gcc-12 $ sudo apt install g++-12
インストール完了後、バージョンを確認。
$ gcc --version $ g++ --version
私の環境では、以下のような表示が出た。無事にインストールできているようだ。
$ gcc --version gcc (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ g++ --version g++ (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
これでコンパイラの更新は完了なのだが、何らかの事情で前のバージョンでのコンパイルを行いたい場合があるかもしれない。「一時的にコンパイラをバージョンダウンしたい」といったときのために、 Ubuntu ではupdate-alternatives
コマンドというものが用意されている。詳しくは以下の記事を参照のこと。
以下のコマンドを実行して、 update-alternatives
コマンドの設定をしておこう。
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12 $ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 12
特に表示が出ることは無い。以上でコンパイラ周りは終了。
VScode の C++拡張機能の設定を変更する
続いて、 VScode 上で C++ を実行するための拡張機能「C/C++」の IntelliSense の構成を変更していく。Ctrl + Shift + P
で VScode のコマンドパレットを開き、「C/C++: 構成の編集 (UI)」を選択。
「コンパイラパス」という項目について、プルダウンメニューから「usr/bin/gcc-12
」を選択。
「C++標準」という項目について、プルダウンメニューから「c++23」を選択。
これで VScode の IntelliSense も C++23 に対応するようになった。
おわりに
以上で、AtCoder 用ローカル開発環境の C++ のバージョンを AtCoder のジャッジ側と同じにすることができた。意外と簡単に済んでしまった。
C++20 / C++23 では非常に多くの新機能が追加されているので、競プロのコーディングの幅も大きく広がることだろう。引き続き私も精進を続けていこうと思った次第である。