这两个分区函数之间的区别
Difference between these two partition functions
我真的无法理解它们之间是否有区别。顺便说一下,函数是用于分区的函数。我问这个的原因是因为我正在实现合并排序,并且下面的第一个函数不起作用。两者都写了,但我根本无法理解为什么第一个不起作用
第一个功能;
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 一致。
相关文章:
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 填充上编译器生成的复制构造函数之间的不一致
- 为什么不允许成员函数和非成员函数之间的函数重载?
- 如何在"push_*()"和"emplace_*()"函数之间进行选择?
- 仅具有运算符()的结构和普通函数之间的实际区别
- 当两者都调用时,删除和析构函数之间的区别?
- Release() 和析构函数之间的区别?
- 调用 "project" 函数和调用 DLL 函数之间的区别
- C++模板和非模板函数之间的重载解析
- std::shared_ptr 和 std::unique_ptr 构造函数之间的不对称
- C++ 和 Lua 函数之间的交互与 3D 矢量参数
- 在结构函数之间传递文件路径 C++ 编辑:修复LNK2019错误
- 在C++同名的顶级函数之间进行选择
- 在成员函数之间传递const变量为数组的索引
- Helgrind 报告了使用 Singleton 及其构造函数之间可能存在的竞争
- 函数模板和函数之间奇怪的不一致"normal"
- 在c#和c函数之间传递值和指针
- 在C++中调用 malloc() 与"operator new"函数之间的实现差异
- 在函数之间传递相同的数组
- C++编译错误是由于使用 std::move 时运动构造函数与其他非运动构造函数之间的冲突