T.TAO
Back to Blog
/2 min read/Others

C++ Programming #9 C++11新機能

C++ Programming #9 C++11新機能

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);