【问题标题】:Merge function two vectors into a third将函数两个向量合并为第三个
【发布时间】: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 个。但我不知道这是怎么发生的。任何帮助将不胜感激。

【问题讨论】:

  • 您应该通过引用传递这些向量。否则它正在复制。

标签: c++ vector merge


【解决方案1】:

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

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

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

vector<int>c;

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

【讨论】:

    猜你喜欢
    • 2015-06-30
    • 2012-09-12
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多