MSVCRT std::vector 新しいページはコチラ
提供: yonewiki
(→メンバ関数 push_back) |
|||
99行: | 99行: | ||
※C++17以降は2つ目に書いたように TypeTemplate& のような挿入したデータへの参照を返却され、受け取ることができます。 | ※C++17以降は2つ目に書いたように TypeTemplate& のような挿入したデータへの参照を返却され、受け取ることができます。 | ||
− | + | ※似た動作をする関数にpush_backという関数があります。emplace_backでは完全転送という処理が行われるためコンストラクタの呼び出しが少なく、処理速度が向上するという利点があります。大量のTypeTemplate型のコンストラクタの引数にガチするデータでコンストラクタの処理が複雑の場合にvector型に格納するときには、良いと思います。大量ですよ。大量。最初の1回の処理には時間がかかるので、大量にvector型を使って、小さなオブジェクトを大量に作る場合もemplace_pushがいいみたい。じゃpush_backって利点がないんじゃ?ふむ、自分もそう思います。たとえばconst TypeTemplate&のように定義しているものを引数にするときはpush_backがそのまま使えて便利です。それくらいかな? | |
129行: | 129行: | ||
範囲に基づくfor文を利用して、Vector<std::string>型のstd::string型の値をひとつづつを取り出しています。分からない人は[[Cpp 範囲に基づく for文]]の記事を参照して下さい。C++言語版のforeachと同様の機能がC++11から追加されたことについての記事になっています。 | 範囲に基づくfor文を利用して、Vector<std::string>型のstd::string型の値をひとつづつを取り出しています。分からない人は[[Cpp 範囲に基づく for文]]の記事を参照して下さい。C++言語版のforeachと同様の機能がC++11から追加されたことについての記事になっています。 | ||
− | + | ※似た動作をするものとしてemplace_backがありますが、emplace_backの方が動作的には速いです。速い理由はemplace_backの説明の方に記載しています。push_backはconst TypeTemplateが使えるので利便性が高い部分はあります。敷き詰めれば、利点は少ないです。 | |
[[Windows#MSVC Runtimeリファレンス|MSVC Runtimeリファレンス]]に戻る | [[Windows#MSVC Runtimeリファレンス|MSVC Runtimeリファレンス]]に戻る |