Третий день уже мучаюсь, не могу сообразить, подскажите пожалуйста, как отсортировать вот к примеру такие данные в массиве типа string следующим образом:
005
01
002
67
45
89
Мне нужно отсортировать данные только начинаюшиеся с нуля, с этим проблем нет:
Stable_sort(massiv.begin(), massiv.end(), [] (auto a, auto b)
{
If((int)b[0][0]) == 48 && (int)a[0][0] == 48) //если первый элемент элемента b и a равно "0", то
{
return ((int)a[0][1]) < (int)b[0][1])); // отсортировать по второму элементу
}
else
{}
проблема возникает, как оставить абсолютно такой же порядок данных не начинаюшихся с нуля ?
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<string> v = { "005", "01", "002", "67", "45", "89" };
// делим массив на 2 группы, 1 - начинается с нуля, 2 - всё остальное
auto it = stable_partition(v.begin(), v.end(), [](const auto &x) { return x[0] == '0'; });
// сортируем первую группу
sort(v.begin(), it);
for (auto &x : v) {
cout << x << endl;
}
return 0;
}
stable_sort(massiv.begin(), massiv.end(), [](auto a, auto b)
{ return (a[0] == '0') ? a < b : a == b; });
Сборка персонального компьютера от Artline: умный выбор для современных пользователей