这两个分区函数之间的区别

时间:2012-04-22 19:37:55

标签: c++ function sorting

我真的无法理解它们之间是否存在差异。顺便说一下,这些函数是用于分区的函数。我问这个的原因是因为我正在实现一个合并排序,并且下面的第一个函数不起作用。两者都写了,但我简直无法理解为什么第一个不起作用

第一个功能;

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;
}

2 个答案:

答案 0 :(得分:3)

唯一的区别是第一个不会在输出中包含vec[finish],而第二个则不包括。{/ p>

答案 1 :(得分:0)

好像你只是从向量中复制一个范围,你可以使用std :: copy。同样为了良好的实践,尽可能通过const-reference。正如其他人指出的那样,两者之间的区别在于第一个函数将完成视为一个传递结束,而第二个函数包含它。通常,您可能希望保持一致并使用第一个,因为它与STL一致。