13,009
回編集
64行目: | 64行目: | ||
</source> | </source> | ||
<br> | <br> | ||
===== x.begin() / x.end()ではなくbegin(x) / end(x)を使用する ===== | |||
<source lang="c++"> | |||
#include <vector> | |||
#include <algorithm> | |||
int iarray[] = {9, 7 ,8, 1, 5}; | |||
std::vector<int> ivec = {5, 4, 0, 7, 1}; | |||
// C++98, C++03の記述方法 | |||
std::sort(&iarray[0], &iarray[0] + sizeof(a) / sizeof(a[0])); | |||
std::sort(ivec.begin(), ivec.end()); | |||
// C++11の記述方法 | |||
std::sort(begin(iarray), end(iarray)); | |||
std::sort(begin(ivec), end(ivec)); | |||
</source> | |||
<br> | |||
===== 推論型 ===== | ===== 推論型 ===== | ||
変数の型を推論型にすることで、プログラミングが簡単・簡素になる。<br> | 変数の型を推論型にすることで、プログラミングが簡単・簡素になる。<br> | ||
autoとRange-Looped forを組み合わせることでループが簡単に記述できる。<br> | autoとRange-Looped forを組み合わせることでループが簡単に記述できる。<br> | ||
<br> | |||
===== Range-Based Loop ===== | |||
全要素に順次アクセスする場合は、Range-Based Loopを使用する。<br> | |||
<source lang="c++"> | |||
// C++98, C++03の記述方法 | |||
for(std::vector<double>::iterator i = dvec.begin(); i != dvec.end(); i++) | |||
{ | |||
sum += *i; | |||
} | |||
// C++11の記述方法 | |||
for(auto d : dvec) | |||
{ | |||
total += d; | |||
} | |||
</source> | |||
<br> | <br> | ||
===== constexpr ===== | ===== constexpr ===== | ||
86行目: | 118行目: | ||
return 0; | return 0; | ||
} | } | ||
</source> | |||
<br> | |||
===== スマートポインタ ===== | |||
従来のnew / deleteではなく、スマートポインタを使用する。<br> | |||
詳細は、[[スマートポインタの使い方(unique ptr)]]、[[スマートポインタの使い方(shared ptr)]]、[[スマートポインタの使い方(weak ptr)]]を参照する。<br> | |||
<source lang="c++"> | |||
#include <memory> | |||
std::unique_ptr<int> pihoge(new(10)); | |||
std::shared_ptr<std::string> pstrhoge(new("")); | |||
std::weak_ptr<double> pdhoge(new(5.0f)); | |||
</source> | </source> | ||
<br> | <br> |