如何在c++中使用std::sort()作为长-长向量

How to use std::sort() for a long long vector in c++?

本文关键字:向量 sort c++ std      更新时间:2023-10-16

我有一个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());