C++11 機能
ラムダ式、auto, range-based for など.
ラムダ式
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
std::cout << "偶数: ";
std::for_each(v.begin(), v.end(), [](int x) {
if (x % 2 == 0) std::cout << x << " ";
});
std::cout << std::endl;
return 0;
}
偶数: 2 4
auto型推定
#include <iostream>
#include <vector>
#include <map>
int main() {
auto v = std::vector<int>{1, 2, 3};
auto m = std::map<std::string, int>{};
for (auto x : v) {
std::cout << x << " ";
}
std::cout << std::endl;
return 0;
}
1 2 3
Range-based for
#include <iostream>
#include <vector>
int main() {
std::vector<int> v = {10, 20, 30};
// 値のコピー
for (int x : v) {
std::cout << x << " ";
}
std::cout << std::endl;
// 参照でアクセス
for (auto& x : v) {
x *= 2;
}
for (int x : v) {
std::cout << x << " ";
}
std::cout << std::endl;
return 0;
}
10 20 30
20 40 60
nullptr
#include <iostream>
void func(int* ptr) {
if (ptr != nullptr) {
std::cout << "ポインタは有効" << std::endl;
} else {
std::cout << "ポインタは null" << std::endl;
}
}
int main() {
func(nullptr); // NULL ではなく nullptr を使用
return 0;
}
ポインタは null
ポイント
- ラムダ式で無名関数
- auto で型推定
- range-based for で簡潔ループ
- nullptr で null代入