40
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C++ std::vector同士の連結方法

Last updated at Posted at 2015-04-14

C++ std::vector同士の連結方法

std::vector v1;
std::vector v2;
  ~初期化~
v1.insert(v1.end(), v2.begin(), v2.end());

以上としていましたが、
std::copyを使ったほうが良いというコメントをいただきました。
以下の通り修正したものを参考にしてください。
(下記に追記しました。大事なことなのに長い間忘れていて反省しています。)

std::vector v1;
std::vector v2;
  ~初期化~
std::copy(v2.begin(),v2.end(),std::back_inserter(v1));

追記:
std::copyを使う場合は元のvectorのサイズに注意してください。
あるvectorの後ろに連結させる場合、
連結させたいvectorのサイズが連結先のvectorより小さい場合は良いのですが、
連結させるvectorが連結先のvectorより大きい場合には、
サイズが足りなくなるとメモリを確保し直します。
サイズ差によってはメモリ確保が何度か繰り返されてしまいます。
そのため、場合によりreserve()したほうがいい場合があります。
*場合に応じてどちらが良いかは変わってくるということでよろしくお願いします。

40
27
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?