試験でよく問われる C++ の文法・標準ライブラリを 40 の穴埋め問題に凝縮。空欄に入力すると即時採点され、「採点する」ボタンで正解も確認できます。
std:: << "hi" << std::endl;
答: cout
int n; std:: >> n;
答: cin
全体で std を省略するには namespace std;
答: using
C++11 以降、64bit 整数リテラルに付ける接尾辞は (大文字推奨)
答: LL
NULL より推奨される C++ のヌルポインタ定数は
答: nullptr
std::<int> v{1,2,3};
答: vector
末尾に追加: v.(4);
答: push_back
要素数: v.()
答: size
for (auto x : v) ... でコピーを避けつつ各要素にアクセス
答: &
キー word、値 int の辞書型: std::<std::string,int> m;
答: map
オブジェクト破棄時に呼ばれる特殊関数: Name()
答: ~
オブジェクトを変更しないメンバ関数には void f() ; と書く
答: const
外から触れないメンバは : セクション
答: private
Dog が Animal を継承: class Dog : Animal {};
答: public
多態にするには基底で void speak();
答: virtual
単独所有権: std::<T>
答: unique_ptr
参照カウント方式: std::<T>
答: shared_ptr
例外安全な shared_ptr 生成: std::<T>(args...)
答: make_shared
unique_ptr を別の変数へ移す: auto b = std::(a);
答: move
循環参照を避ける参照だけ持つ: std::<T>
答: weak_ptr
関数テンプレートの宣言: <class T> T max(T,T);
答: template
可変引数テンプレート: template<class... >
答: Args
戻り値型を推論させる: f(int x) { return x*2; }
答: auto
式の型を取得: (x+y) z;
答: decltype
コンパイル時チェック: (sizeof(int)==4);
答: static_assert
参照キャプチャの記法: [](int x){ ... }
答: &
降順ソート: std::sort(v.begin(), v.end(), std::<>{});
答: greater
条件検索: std::(v.begin(), v.end(), pred);
答: find_if
合計: std::(v.begin(), v.end(), 0);
答: accumulate
変換: std::(in.begin(), in.end(), out.begin(), f);
答: transform
空の optional を返す: return std::;
答: nullopt
現在の型が int か: std::<int>(v)
答: holds_alternative
基本例外の基底: std:: クラス
答: exception
move コンストラクタは T(T&&) ; にすべき
答: noexcept
catch ブロック内で例外を再送: 引数なしの ;
答: throw
スレッド起動後に待つ: t.();
答: join
RAII ロックの基本: std::<std::mutex> lk(m);
答: lock_guard
非同期で結果を受け取る: std::<int> f = std::async(fn);
答: future
ロック不要のカウンタ: std::<int> n{0};
答: atomic
C++17 で pair を分解: auto [a, b] ret;
答: =