如何在c ++中使用sort()对向量进行排序

时间:2017-06-07 19:16:19

标签: c++ sorting vector

我想在已经排序的向量中插入一个元素,并且当它再次排序时,它将被放置在它的排序位置。 有一个名为 sort()的函数用于对数组进行排序。如何使用相同的函数对向量进行排序? 这是我的代码。它给了我编译错误。

//assume g1 is already sorted with some numbers        
int x;
cin >> x;
g1.push_back(x);
int s = g1.size()/g1.at(g1.begin());
//similar to int s = arr/arr[0]
sort(g1 + s,g1);

3 个答案:

答案 0 :(得分:3)

std::sort(g1.begin(), g1.end());

应该做的伎俩。

或者,如果您希望能够使用普通数组切换vector的{​​{1}},而不必修改此代码,或者如果这是在模板代码中您想使用多种容器类型,然后使用表单

g1

可能会更具吸引力。

无论如何; ,请阅读the documentation

答案 1 :(得分:2)

不是排序,而是找到新元素应该去的位置并将其插入那里:

std::vector<int>::iterator loc = std::upper_bound(g1.begin(), g1.end(), x);
g1.insert(loc, x);

或者,更简单地说:

g1.insert(std::upper_bound(g1.begin(), g1.end(), x), x);

答案 2 :(得分:0)

保持简单,让arr成为矢量名称。写:sort(arr.beg(),arr.end());

(假设你已经写过using namespace std;