如何在c++中使用std::sort()作为长-长向量
How to use std::sort() for a long long vector in c++?
我有一个long-long类型的向量,希望按升序排序,但我认为我误解了std::sort((的用法。
#include <vector>
#include <algorithm>
#include <functional>
...
std::vector<long long> numbers (4);
numbers[0] = 6;
numbers[1] = 4;
numbers[2] = 3;
numbers[3] = 7;
我尝试过使用:
std::sort(numbers.begin(), numbers.end(), std::greater<long long>());
但我收到一个错误,上面写着
std::vector<long long int>’ is not derived from ‘const std::basic_string<_CharT, _Traits, _Alloc>’
此外,理想情况下,我希望仅在两个元素之间对向量进行排序,例如在数字[1]和数字[2]之间;但是将这些值用于前两个参数似乎不起作用。
谢谢。
编辑:此外,我正在使用g++编译器
Sort已经按升序排序了,所以您只需要
std::sort(numbers.begin(), numbers.end());
您发布的代码将按降序排序,并按原样工作,但您必须#include <functional>
:
#include <functional> // for std::greater, std::less
#include <algorithm>
#include <vector>
....
std::sort(numbers.begin(), numbers.end(), std::greater<long long>());
您现在拥有的是已经正确的。(假设它正确地表达了你的意图。你需要升序还是降序排序顺序?(。
您收到的错误消息可能是由于忘记包含某些头文件所致。恰好算法的某些重要部分(std::greater
?(的实现仅部分地包括在std::string
中,而不包括在一般情况下。
请确保包含<vector>
、<algorithm>
和<functional>
,后者最有可能是丢失标头的候选者。您是否包括<functional>
?
默认情况下,std::sort
会将它们按升序排列。
如果你想让它们下降,在容器上向后迭代:
std::sort(numbers.rbegin(), numbers.rend());
相关文章:
- std::sort()函数无法对向量的一部分进行排序
- 使用 std::sort 对向量进行稳定排序
- 在使用 std::sort() 和 lambda 函数按属性对 ADT 的向量进行排序时遇到问题
- 如何在 c++ 中使用 sort() 对向量进行排序
- 如何使用 std::sort() 对指向值的向量进行排序?
- 类对象的向量上的sort()给出了分割故障
- 使用 std::sort() 对对象的向量进行排序
- 为向量类编写 sort() 方法
- 使用 std::sort 对指针向量进行排序,导致地址混乱
- std::sort() 不适用于对向量
- 基于一行对 3D 向量进行排序(C++,std::sort)
- 为什么std::sort()改变了排序向量
- 如何使用std::sort对向量的元素按行排序?
- c++ std::sort():仅使用一个比较函数的任何可比较成员的对象向量
- 在一个向量中使用sort()比较两个对象变量
- 如何使用sort对类中的向量进行排序
- Sort函数,它获取指向接口类的指针向量
- 在结构指针的向量上调用c++ std::sort
- 使用 std::sort 对向量进行排序
- 使用 std::sort 对自定义类中的向量进行排序C++