我真的无法理解它们之间是否存在差异。顺便说一下,这些函数是用于分区的函数。我问这个的原因是因为我正在实现一个合并排序,并且下面的第一个函数不起作用。两者都写了,但我简直无法理解为什么第一个不起作用
第一个功能;
vector<int>partition(vector<int>vec,int start,int finish)
{
vector<int>list;
for(int i=start;i<finish;i++)
list.push_back(vec[i]);
return list;
}
第二个功能;
vector<int>partition(vector<int>vec,int start,int finish)
{
vector<int>parted;
int size=finish-start+1;
for(int i=0;i<size;i++)
parted.push_back(vec[i+start]);
return parted;
}
答案 0 :(得分:3)
唯一的区别是第一个不会在输出中包含vec[finish]
,而第二个则不包括。{/ p>
答案 1 :(得分:0)
好像你只是从向量中复制一个范围,你可以使用std :: copy。同样为了良好的实践,尽可能通过const-reference。正如其他人指出的那样,两者之间的区别在于第一个函数将完成视为一个传递结束,而第二个函数包含它。通常,您可能希望保持一致并使用第一个,因为它与STL一致。