【发布时间】:2017-04-11 09:07:27
【问题描述】:
我正在尝试合并或组合 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 个。但我不知道这是怎么发生的。任何帮助将不胜感激。
【问题讨论】:
-
您应该通过引用传递这些向量。否则它正在复制。