C++プログラミング #9 C++11新機能
- Lingheng Tao
- 2024年8月25日
- 読了時間 2 分
Algorithms & Data Structure Content List C++ Programming Content List Unity Shader Content Table
#ComputerScience#GameProgramming
本稿は C++11 の新機能についてです。
自動型推論 —— auto キーワード
auto によりコンパイラが初期化式から型を自動推論。コードが簡潔になり、型宣言の重複が減る。
Plain Textauto x = 10; // x is an int
範囲 for ループ
Plain Textstd::vector<int> vec = {1,2,3,4,5};
for (auto& elem: vec) {
std::cout << elem << std::endl;
}
スマートポインタ
C++11 は std::unique_ptr と std::shared_ptr を導入。動的メモリの自動管理で手動解放のミスを防ぐ。
- std::unique_ptr: 排他的所有権。1つのリソースに1つのポインタのみ。
- std::shared_ptr: 共有所有権。参照カウントでライフサイクルを管理。
匿名関数(Lambda)
Plain Textauto add = [](int a, int b) -> int {
return a + b;
};
std::cout << add(3,4) << std::endl;
移動セマンティクスと右辺値参照
&& で右辺値参照を表す。不要なコピーを避けてパフォーマンスを向上。
Plain Textstd::vector<int> vec1 = {1,2,3};
std::vector<int> vec2 = std::move(vec1);
// vec1 のリソースが vec2 に移動、コピーを回避
nullptr キーワード
NULL に代わる空ポインタ定数。型安全性が向上。
using キーワードと型エイリアス
Plain Textusing int_ptr = int*;
constexpr キーワード
コンパイル時定数を定義。const と異なり、式がコンパイル時に評価されることを保証。
Plain Textconstexpr int square(int x) {
return x * x;
}
constexpr int result = square(5);
