Stable_sort, как отсортировать только часть

105
16 марта 2021, 21:10

Третий день уже мучаюсь, не могу сообразить, подскажите пожалуйста, как отсортировать вот к примеру такие данные в массиве типа 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
{}

проблема возникает, как оставить абсолютно такой же порядок данных не начинаюшихся с нуля ?

Answer 1
#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;
}
Answer 2
stable_sort(massiv.begin(), massiv.end(), [](auto a, auto b)
    { return (a[0] == '0') ? a < b : a == b; });
READ ALSO
Добавить/удалить класс [закрыт]

Добавить/удалить класс [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

158
Быстрый поиск по сайту

Быстрый поиск по сайту

Есть сайт, библиотека с около 1К книг (html файлов)Нужно было организовать поиск

133
Непонятные изображения (ракета, молния &hellip;) в HTML коде?

Непонятные изображения (ракета, молния …) в HTML коде?

В HTML коде увидел непонятные изображения откуда они берутся, как можно их использовать ?

87
Как сделать ul в ряд, где li идет под li?

Как сделать ul в ряд, где li идет под li?

Всем приветВозможно все довольно просто, но мучаюсь, как сделать так, чтобы было как на изображении?

115