You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
この記事は初心者 C++er Advent Calendarの1日目の記事です。 はじめに みなさんはstd::vectorやstd::listで要素を追加するときに、「push_back関数よりも、 emplace_back関数を使った方が良い」と言われたりしたことがあると思います。 この記事ではその二つの関数の動作などを解説していきます。 どこがちがうの? std:vectorのpush_backは以下に示すように、実引数が左辺値用と右辺値用にオーバーロードされています。 template<class T, class Allocator = allocator<T>> class vector { public: ... void push_back(const T& param); void push_back(T&& param); ... }; 左辺値の場合はコピーされて、右辺
template <class... Args> void emplace_back(Args&&... args); // (1) C++11 template <class... Args> reference emplace_back(Args&&... args); // (1) C++17 template <class... Args> constexpr reference emplace_back(Args&&... args); // (1) C++20 template <class... Args> void vector<bool>::emplace_back(Args&&... args); // (2) C++11 template <class... Args> reference vector<bool>::emplace_back(Args&&... ar
namespace std { template <class T, std::size_t N> struct array; } 概要 arrayは固定長のオブジェクトを保持するシーケンスコンテナで、各要素は連続して格納される。従来のCスタイルの配列のパフォーマンスを保ったまま、シーケンスのサイズの取得、要素の代入のサポートなど、標準コンテナの恩恵を受ける事ができる。また、境界チェック(範囲外の要素にアクセスしようとしていないかのチェック)付きの要素アクセスもサポートしている。 arrayは、デフォルトコンストラクタで構築されたarrayオブジェクトが空でない点と、swap()の計算量が定数時間でない点を除いて、コンテナとリバーシブルコンテナの全ての要件を満たす。 テンプレートパラメータは、以下を意味する: T : 配列の要素型 N : 配列の要素数。0以上であること メンバ関数 構築/
namespace std { template <class C> constexpr auto size(const C& c) -> decltype(c.size()); // (1) template <class T, std::size_t N> constexpr std::size_t size(const T (&array)[N]) noexcept; // (2) } 概要 コンテナの要素数を取得する。 戻り値 (1) : return c.size(); (2) : return N; 備考 機能テストマクロは__cpp_lib_nonmember_container_accessで値は201411 <iterator>ヘッダを読み込む以外では、以下のヘッダが読み込まれている場合に、この関数を使用できる: <array> <deque> <forward_list
概要 optionalクラスは、任意の型Tの値を有効値として、あらゆる型に共通の無効値状態を表現できる型である。 このクラスには、大きく2つの用途がある: オブジェクトの初期化タイミングを遅延させる エラー報告のために、あらゆる型に共通の無効値表現を持たせる オブジェクトは定義した時点で初期化が行われるが、optionalクラスはその初期化タイミングを遅延させるために使用できる。この用途には、std::shared_ptrのようなスマートポインタを使用することもできるが、このクラスは動的メモリ確保を行わないため、リソース管理ではなく初期化タイミングを遅延させるだけであれば、このクラスの方が適している。 エラー報告について、このクラスを使用しない場合、従来の方法として有効値と無効値は、以下のように表現されていた: int型の場合、0以上の値を有効な値とし、エラーが起きたら負数を代入する ポイ
はじめに 2020年10月にリリースが予定されているPython3.9で新たに加わる変更をPython3.9の新機能 (まとめ)という記事でまとめています。少し分量のありそうな話題を別記事にしていますが、これはその第二弾で、有向非巡回グラフのソートについてです。 有向非巡回グラフとトポロジカルソート まず、ここでいうグラフは折れ線グラフとか棒グラフとかデータを視覚的に表す図表のことではなく、グラフ理論のグラフです。グラフはデータ構造の一種で、ノード(頂点)とそれらを繋ぐエッジ(枝)で構成されています。ノードやエッジに何かしらの意味をもたせることによって、関連性を持つ情報を表すことができます。 グラフにもいくつか種類があり、その最初の分かれ道がエッジに方向があるかないか。方向があるものを有向グラフ(左側)、無いものを無向グラフ(右側)といいます。 エッジはノードを繋ぐものですが、繋がれたノー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く