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

Difference between these two partition functions

本文关键字:函数 之间 区别 分区 两个      更新时间:2023-10-16

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

第一个功能;

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

唯一的区别是第一个不会在输出中包含vec[finish],而第二个将包含

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