排序函数调用后数组不会更改

时间:2018-05-27 01:00:35

标签: c++ sorting

使用插入排序的实现对向量进行排序时,作为参数传递的数组不会因此而更改。

我之前尝试过此操作,无法找到我的问题,我们将不胜感激。

5 * (1 + 4 * (1 + 3 * (1 + 2 * (1 + 1))))

1 个答案:

答案 0 :(得分:3)

除非传递引用,否则将按值复制参数。要修改传入的对象,请改用引用。

传递vector<int> &arr而不仅仅是vector<int> arr。请注意&

另一种方法是返回已排序的数组并将其分配给旧的未排序数组。

一些提示:

  1. rand之前,请致电srand以使用种子初始化PRNG。从C ++ 11开始,还有<random>,无论如何你都应该支持。

  2. std::endl刷新流缓冲区。 '\n'没有,但具有相同的视觉效果。除非您确实要刷新流缓冲区,否则请使用'\n'。特别是在循环中,反复冲洗是多余的,效率低下。

  3. 为STL数据结构使用适当的大小类型。对于std::vector,这是std::vector<T>::size_type a.k.a. std::size_t。与阵列相同,BTW。而不是int,请使用std::size_tstd::vector::size也会返回std::size_t,而不是int