boost::phoenix
От: Нomunculus Россия  
Дата: 02.07.25 06:57
Оценка:
Вот есть код с использованием сабжа:

    std::vector<int> numbers{210, 5, 62, 42, 54, 342};

    std::partition(numbers.begin(), numbers.end(), arg1<=42);

    for (int addd : numbers) {
        std::cout << addd << "-------";

    }


он должен вывести

5-------42-------210-------62-------54-------342-------


а выводит

42-------5-------62-------210-------54-------342-------


что не так?
Re: boost::phoenix
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 02.07.25 07:09
Оценка: 10 (1)
Здравствуйте, Нomunculus, Вы писали:

Н>что не так?


Всё так. Алгоритм не гарантирует порядок, он гарантирует разделение. Поэтому поменял местами 210 и 42: очень оптимально и так, как гарантировано.
Re[2]: boost::phoenix
От: Нomunculus Россия  
Дата: 02.07.25 07:11
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Нomunculus, Вы писали:


Н>>что не так?


N>Всё так. Алгоритм не гарантирует порядок, он гарантирует разделение. Поэтому поменял местами 210 и 42: очень оптимально и так, как гарантировано.


Блин, точно, тупанул. Спасибо
Re: boost::phoenix
От: serg_joker Украина  
Дата: 02.07.25 07:12
Оценка: +1
Здравствуйте, Нomunculus, Вы писали:

Н>Вот есть код с использованием сабжа:

А что не так-то?
42-------5-------62-------210-------54-------342-------
вроде, правильное разделение, все _ <= 42 находятся до любого !( _ <= 42).
порядок не сохранён — так этого никто и не обещал, вроде.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.