我想在已经排序的向量中插入一个元素,并且当它再次排序时,它将被放置在它的排序位置。 有一个名为 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);
答案 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;
)