我试图合并或组合两个载体,如
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个。但我不知道这是怎么回事。任何帮助将不胜感激。
答案 0 :(得分:0)
push_back
成员函数在向量的末尾添加一个新元素。由于您已在示例中使用4个元素调整了向量的大小,因此push_back
调用将进一步增加其长度:
vector<int>c(a.size()+b.size());
结果是原始的四个位置保持不变(处于零状态),因为新值被固定到矢量的末尾。将您的c
声明更改为以下内容,这将初始化一个空矢量以开头:
vector<int>c;
这可能是你正在寻找的错误。