我正在尝试返回一个向量结合a和b的向量的向量,如果向量a的值为1,2,3且向量b的值为4,5,6,8,9,然后该函数返回1,4,2,5,3,6,7,8,9的向量。到目前为止,我得到了这段代码:
vector<int> merge(const vector<int>& a,
const vector<int>& b){
vector<int> result;
size_t aLen = a.size(), bLen = b.size();
size_t aVal = 0, bVal = 0;
for (size_t i = 0; i < (aLen + bLen); i++){
if (i % 2 == 0 && aVal < aLen){
result.push_back(a.at(aVal));
aVal++;
}
else if (bVal < bLen){
result.push_back(b.at(bVal));
bVal++;
}
}
return result;
}
答案 0 :(得分:1)
不确定你在问什么,但如果它只是两个向量的联合,那么你可以使用算法来做到这一点:
#include <algorithm>
#include <vector>
#include <iterator>
using namespace std;
vector<int> merge(const vector<int>& a,
const vector<int>& b)
{
vector<int> result;
std::set_union(a.begin(), a.end(), b.begin(), b.end(), back_inserter(result));
return result;
}
见这里:http://www.cplusplus.com/reference/algorithm/set_union/
如果您的目标是实际交织两个已排序的向量,那么您可能应该选择std :: list over vector,然后调用merge()。