Я пытаюсь отсортировать std::vector<std::pair<float, std::string>>
в порядке возрастания.
Хотя использование std::sort
работает, я обнаружил, что строки влияют на порядок, если значения с плавающей точкой имеют одинаковые значения.
Я хотел бы отсортировать вектор независимо от строки, чтобы первый элемент всегда располагался первым, а не последним.
Мой код:
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<std::pair<float, std::string>> vec;
vec = {{1, "e"}, {1, "d"}, {1, "c"}, {1, "b"}, {1, "a"}};
std::sort(vec.begin(), vec.end());
for (auto i : vec)
std::cout << i.first << ", " << i.second << '\n';
}
Результат, который я получаю: (в алфавитном порядке, когда значение связано)
1, a
1, b
1, c
1, d
1, e
Program ended with exit code: 0
Результат, который я хочу: (прежний элемент первым, когда значение связано)
1, e
1, d
1, c
1, b
1, a
Program ended with exit code: 0