Ivan
Это что
Anton
сортировка за O(n*n!)
Ivan
Не
Ivan
Ты бы ещё Rand sort
cyberzx 🇷🇺
нет. за O(max(args))
cyberzx 🇷🇺
тут вообще не за N
cyberzx 🇷🇺
а, ты про богосорт
Anton
Ты бы ещё Rand sort
так это и есть
Ivan
А ок
Anton
А так список сортировок мне отсюда нравится: http://neerc.ifmo.ru/wiki/index.php?title=Сортировки
Anton
хотя он не полный
Vergil
ещё не выходило книг по семнадцатым плюсам?
Vergil
ну кроме спецификации
Vergil
вроде как утвердили и скоро собираются обсуждать 20++
Vergil
ща гляну. мож ошибся датой
Vergil
таки да
Vergil
стандарт принят
Anonymous
Ясненько
Vergil
остается только ждать реализации полные
Vergil
и книжки почитать)
Yaroslav
кто нить юзает в коде unique_ptr и move semantics? я чето не понимаю, вот передал я владение объектом а по указателю потом "случайно" дернул .get() и получил.. ну понятно что получил в итоге. Немогу никак понять в чем тогда uniqness его?
Additionally, u can, upon request, transfer ownership to another unique pointer u2. Upon completion of such a transfer, the following postconditions hold: u2.p is equal to the pre-transfer u.p, u.p is equal to nullptr, and if the pre-transfer u.d maintained state, such state has been transferred to u2.d.
Alexander
посмотрите пожалуйста, это корректное использование unique_ptr + move semantics? в этом коде мне необходимо добиться того, что-бы некторый Item перемещенный в Inventory само-уничтожился в тот момент, когда он будет удален из контейнера. В этом примере объявлено два Item, один из них удалется во время иттерирования, а другой нет. Судя по логу работает так, как я и предполагаю, есть какие-то подводные камни в таком подходе? http://dumpz.org/2625482/
RattenKong 🦧🐀🦍️
auto&& у make_shared?
RattenKong 🦧🐀🦍️
вы знаете значение?(au to)
Alexander
ну конечно, очевидно же - uniq_ptr<T> где T в моем случае - Item
Александр
Всё норм с auto&&
Олександр
Что-то не так с циклом
Alexander
Что-то не так с циклом
да хз вроде так все
Олександр
Я бы делал return из if
Олександр
Или логика в удалении подобных?
Alexander
почему? а если в нем больше одного предмета с одинаовым именем?
Олександр
Я понял
Олександр
Ну и enum вместо строк
Alexander
да суть примера - механика работы uniq_ptr + move semantics
Alexander
Я понял
а если предметов 1000+
Alexander
?
Alexander
да кароче не суть как хранить это, вопрос просто в другом)
Олександр
1000+ классов?
Олександр
а если предметов 1000+
Быстрее ж будет работать
Alexander
нет, 1000 предметов с разными именами
Alexander
1000 экземпляров класса
RattenKong 🦧🐀🦍️
ну конечно, очевидно же - uniq_ptr<T> где T в моем случае - Item
Это будет l-value ссылка на объект, если что(либо поправьте)
Олександр
да кароче не суть как хранить это, вопрос просто в другом)
Вообще в этом маленьком примере незачем unique_ptr
RattenKong 🦧🐀🦍️
а не просто l-value
Олександр
Разве не rvalue?
Alexander
да блин, какая разница мы не об этом сейчас)
Олександр
Вообще в этом маленьком примере незачем unique_ptr
Достаточно делать emplace в контейнере, и удалять там же
RattenKong 🦧🐀🦍️
Разве не rvalue?
auto&& == T&&
Alexander
это код демонстрирует прототип проблемы из большого проекта, нет задачи оптимизировать циклы
Олександр
auto&& == T&&
Это rvalue ссылка
RattenKong 🦧🐀🦍️
то есть <typename T>foo(T&& bar); не то же самое что foo(obj&& bar);
RattenKong 🦧🐀🦍️
оно может быт ькак rvalue, так и lvalue ссылкой
RattenKong 🦧🐀🦍️
мне кажется, что это обязательный вопрос на собеседованиях с плюсами 11+
RattenKong 🦧🐀🦍️
погугли universal reference
Yaroslav
https://stackoverflow.com/questions/13230480/what-does-auto-tell-us
Yaroslav
Вот тут хорошо объясняется
Yaroslav
auto&& может быть как lvalue, так и rvalue
Олександр
погугли universal reference
Ааа, ты об этом Ну оно может принять и const T&
RattenKong 🦧🐀🦍️
reference забыл!!
Yaroslav
Но вообще в примере цикл заменяется на std::remove_if =)
Yaroslav
Что касается move semantics, то все ок
Yaroslav
но есть emplace)
Олександр
👆 В примере не нужен unique_ptr, ибо используется только в контейнере
Alexander
Но вообще в примере цикл заменяется на std::remove_if =)
к сожалению remove_if не удаляет элемент
Yaroslav
👆 В примере не нужен unique_ptr, ибо используется только в контейнере
так он для теста используется чисто , насолкьок я понля
Alexander
но есть emplace)
пример упрощен, в реальном коде работа идет с интерфейсов у которого нет emplace
Yaroslav
к сожалению remove_if не удаляет элемент
std::erase(std::remove_if(v.begin(), v.end(), condition), v.end());
Alexander
^^ ну по мне дак итератор выглядит понятнее)
Alexander
ну вот я это и делаю в примере, что скинул
Alexander
просто тут push_back а в реальном коде add через интерфейс
Alexander
суть - передать ownership и при удалении не облажаться
Yaroslav
в общем, имхо, с ownership там все ок
Anonymous
люди а че @procxxlib пустой?
Олександр
@AlexFails не пилит бота