「C++の変更点」の版間の差分

ナビゲーションに移動 検索に移動
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>

案内メニュー