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



我正在尝试合并或组合 2 个向量,例如

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 个值。但我不知道这是怎么回事。 任何帮助将不胜感激。

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

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

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

vector<int>c;

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

相关内容

最新更新