如何在c ++中合并两个向量?

时间:2018-04-05 05:08:47

标签: c++ vector merge

我有三个向量。 V1,V2,V3。

$ sudo yum install ftp://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/hicolor-icon-theme-0.11-1.1.el6.noarch.rpm

$ sudo yum install ftp://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/atk-1.30.0-1.el6.x86_64.rpm

$ sudo yum install ftp://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/gdk-pixbuf2-2.24.1-6.el6_7.x86_64.rpm

$ sudo yum install ftp://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/gtk2-2.24.23-9.el6.x86_64.rpm

现在,在排序v1和v2之后,我想将它们合并到v3中。 这就是我所写的,但它会导致分段错误。无法弄清楚原因。(如果有人写解决方案,请解释为什么它有效以及为什么我的解决方案不起作用)。我从c++ documentation获得了帮助。有什么我想念的吗?

2 个答案:

答案 0 :(得分:4)

如果您想使用v3.begin()代替插入器,则必须保证v3的大小足以容纳来自v1v2的所有值。

答案 1 :(得分:2)

终于找到了schorsch_76的评论:)。

sort(v1.begin(),v1.end());
sort(v2.begin(),v2.end());
merge(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v3)); // change here

只使用back_inserter(vector_name),而不是vector.begin() ...

在合并v3中的两个向量(v1和v2)之前,我们需要确保v3具有足够的大小来存储两个向量。