0

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

第一个功能;

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

2 回答 2

3

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

于 2012-04-22T19:43:11.727 回答
0

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

于 2012-04-22T20:10:16.023 回答