将函数两个向量合并为第三个

时间:2017-04-10 23:00:44

标签: c++ vector merge

我试图合并或组合两个载体,如

vector a{1,2}vector b{3,4} 进入第三个 vector c{1,3,2,4}

#include<vector>
#include<iostream>
using namespace std;
vector<int> append(vector<int> a, vector<int> b)
{
int n = a.size();
int m = b.size();
vector<int> c(n+m);
int i;
for(i=0; i<n;i++)
    c[i]=a[i];
for(i=0;i<m;i++)
    c[n+i]=b[i];

return c;
}
vector<int> merge(vector<int>a,vector<int>b)
{

vector<int>c(a.size()+b.size());
int x=0;
for(int i=0;i<a.size();i=+2){
    c.push_back(a[x]);
    c.push_back(b[x]);
    x++;
}
return c;
}
main()
{
int input,input2;
vector<int> one;
cout<<"Give inputs for vetor #1. When done give -1 as input"<<endl;
while((cin>>input)&& input!=-1)
    one.push_back(input);

vector<int> two;
cout<<"Give inputs for vector #2. When done give -1 as input"<<endl;
while((cin>>input2)&& input2!=-1)
    two.push_back(input2);
vector<int> three;
three=merge(one,two);
for(int i=0;i<three.size();i++)
    cout<<three[i]<<endl;

}

我有这段代码,但输出错误输出

0 0 0 0 1 3

何时输出

1 3 2 4

我能否对合并功能出错做些什么帮助? 我尝试过搜索,但无法找到能够帮助我的例子。 我看到了其他一些例子,但我无法让它发挥作用。 我认为向量c大小是错误的,因为它输出6个值而不是4个。但我不知道这是怎么回事。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

push_back成员函数在向量的末尾添加一个新元素。由于您已在示例中使用4个元素调整了向量的大小,因此push_back调用将进一步增加其长度:

vector<int>c(a.size()+b.size());

结果是原始的四个位置保持不变(处于零状态),因为新值被固定到矢量的末尾。将您的c声明更改为以下内容,这将初始化一个空矢量以开头:

vector<int>c;

这可能是你正在寻找的错误。

相关问题