我已经为向量实现了一个合并函数,它基本上结合到一个排序向量中的排序向量。(是的,它用于合并排序算法)。我试图让我的代码更快并避免开销,所以我决定不在向量上使用 push_back 方法,而是尝试使用开销较小的数组语法。但是,有些事情发生了严重错误,当我这样做时输出搞砸了。这是代码:
while(size1<left.size() && size2 < right.size()) //left and right are the input vectors
{
//it1 and it2 are iterators on the two sorted input vectors
if(*it1 <= *it2)
{
final.push_back(*it1); //final is the final vector to output
//final[count] = *it1; // this does not work for some reason
it1++;
size1++;
//cout<<"count ="<<count<<" size1 ="<<size1<<endl;
}
else
{
final.push_back(*it2);
//final[count] = left[size2];
it2++;
size2++;
}
count++;
//cout<<"count ="<<count<<" size1 ="<<size1<<"size2 = "<<size2<<endl;
}
在我看来,这两种方法在功能上应该是等效的。
PS 我已经为最终向量保留了空间,所以这不应该是一个问题。