【问题标题】:How to sort a vector using sort() in c++如何在 C++ 中使用 sort() 对向量进行排序
【发布时间】:2017-11-09 07:17:40
【问题描述】:

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

【问题讨论】:

  • int s=g1.size()/g1.at(g1.begin()); 尝试做什么?
  • @RajatSingh 每个人都在告诉你阅读std::sort 的文档。它包含一个按降序排序的示例!已提供多个链接。
  • 推送后排序的替代方法,您可以将值插入正确的位置g1.insert( std::upper_bound( g1.begin(), g1.end(), x), x );
  • @Rajat "as im new to vectors" 好吧,如果您遇到新事物,请先阅读文档,然后再在这里询问琐事。

标签: c++ sorting vector


【解决方案1】:
std::sort(g1.begin(), g1.end());

应该做的伎俩。

或者,如果您希望能够使用普通数组切换 vectorness 与 g1,而无需修改此代码,或者如果这是在您想要工作的模板代码中有多种容器类型,然后是表单

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

可能更具吸引力。

无论如何; ,请阅读the documentation

【讨论】:

  • 或者更好:std::sort(std::begin(g1), std::end(g1));
  • @πάντα ῥεῖ 在不编写通用(模板)代码时,主要是个人喜好问题。但是是的,当然,您的变体确实有其优势。
  • 我更喜欢使用这种形式。
  • @πάντα ῥεῖ 各有各的 :-) 但我当然可以理解你的理由。
【解决方案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);

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • "arr.beg()"?这甚至无法编译。
    • 别忘了添加#include
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2023-03-11
    相关资源
    最近更新 更多