Ioann_
Там одна мапа невалидная
Ну так, как мне это фиксануть то ?
Mar
возьми другую, их же две
Mar
vis.lem - валидная
Ioann_
10 ##end zhopa 12 43 one 10 0 two 10 1 three 20 2 ##start four 10 3 zhopa-four one-two two-three three-four zhopa-one
Ioann_
эта ?
Mar
да! не работает? у меня ок
Ioann_
Не работает ...
Mar
Я пофиксил по ходу.
Mar
Mar
Хотя теперь я удалил эту часть которую фиксил и все равно не сигфолтит) проверю диффы
Mar
тю. Странно, добавил только каллок
Mar
он зануливал, но до этого все было так же, непонятно, я залью изменения
Berkus
calloc = malloc+bzero
Mar
это я знаю, сам же писал (раньше)
Mar
я о том что до того я выделял статически, и дальше через bzero, проверял потом -- везде nil
Mar
потом сделал через каллок, и тройной массив (вуаля)
Ioann_
у меня вообще твой код много где падает
Ioann_
но мне нравится С, люблю его очень, очень - аж до слез :) У меня кстати среднее количесвто наработанных часов в неделю обычно ~80
Ioann_
Ну последнее - это в общий чат
cyberzx 🇷🇺
что такое общий чат?
Mar
если ты клонил, то откатись до "Stable" версии)
Mar
(туточки)
Ioann_
что такое общий чат?
ну, типа всем в чат, а не богдану конкретно
Berkus
https://dl.dropboxusercontent.com/s/jpybez8xj24298m/2017-08-05%20at%2002.01.png смешные всё-таки названия
Vladislav
Yobibyte - sounds legit
Berkus
зебибись!
Vladislav
о, там есть approximate matching
Anonymous
А индукция?
Anonymous
Еп.
Anonymous
Я математик, я шарю. Че тут забыл? Хз ;D
Vladislav
https://github.com/facebookarchive/squangle
Polina
Вопрос возможно некорректный для этого чата, как списаться с тем человеком, который постит вакансии С++? Он не отвечает 😢😢
Berkus
можете пока перепроверить текст вакансии, указали ли город, зарплатную вилку, вот это всё
Berkus
сэкономите изрядно времени себе и другим
Ioann_
Эй, мы уже разобрались, а ты снова в избушку тащишь ...
cyberzx 🇷🇺
Кстати, никогда не делайте мув, возвращая объект из функции по значению
cyberzx 🇷🇺
Это сразу сделает невозможным RVO
Ioann_
Не совсем верный совет. Все зависит от тех, кто код пишет. Если ты знаешь что возможномувнуть то можно мувнуть, но если знаешь что нет - то просто копируй
Vitaliy ◀️TriΔng3l▶️
Привет) А можете объяснить, почему иногда мув реализуют как обмен, а иногда - объект, из которого мувают, скажем так, обнуляют?
Vitaliy ◀️TriΔng3l▶️
И как его вообще надо использовать тогда?
Vitaliy ◀️TriΔng3l▶️
Просто в моём представлении после move должен оставаться один объект, с которым можно адекватно работать, который может иметь какие-то ресурсы, а не два, в отличие от копирования
Arseny
В stl состояние объекта после move из него обычно не определено. Кроме нескольких исключений вроде unique_ptr. Мне тоже кажется, что это неудобно и в своих классах я всегда стараюсь гарантировать, чтобы move обнулял объект.
Vitaliy ◀️TriΔng3l▶️
После move вроде надо ~ делать же?
Arseny
первое предложение касается например... std::vector, list, etc?
Да Состояние после move не определенное, но валидное.
Vitaliy ◀️TriΔng3l▶️
А
Vitaliy ◀️TriΔng3l▶️
Это в случае, если ты placement new используешь
Vitaliy ◀️TriΔng3l▶️
Например, при раздвигании самодельного вектора, тогда ~
Vitaliy ◀️TriΔng3l▶️
Запутался совсем
Arseny
Я тоже. При чем тут деструктор?
Vitaliy ◀️TriΔng3l▶️
В общем, какую-то дичь несу. move на владение объектами и на, скажем так, сконструированность, никак не влияет же. Просто в моём конкретном случае, когда move использовал (реализация вектора), так надо было.
cyberzx 🇷🇺
Не совсем верный совет. Все зависит от тех, кто код пишет. Если ты знаешь что возможномувнуть то можно мувнуть, но если знаешь что нет - то просто копируй
Когда ты возвращаешь объект по значению компилятор старается будет пытаться выполнить следующие действия 1. Использовать copy ellision 2. Использовать move конструктор 3. Использовать copy конструктор Если ты делаешь move, то просто скипаешь первый пункт
cyberzx 🇷🇺
http://en.cppreference.com/w/cpp/language/copy_elision
Ioann_
Я про это и говорю
Ioann_
Но это не означает что мув использовать не стоит.
Ioann_
Copy elision или мув решает тот кто код пишет. Если я знаю что можно на изи мувнуть объект то и копи элижн мне не нужны, нет ?
Vitaliy ◀️TriΔng3l▶️
Стоит для более-менее крупных объектов, которые запрашивают какие-то внешние ресурсы (динамически выделяют память, например)
cyberzx 🇷🇺
Это гарантированная песимизация
Vitaliy ◀️TriΔng3l▶️
А то вдруг конструктор по умолчанию выделит что-нибудь
Arseny
Vitaliy ◀️TriΔng3l▶️
И ты тут же это освободишь
Vitaliy ◀️TriΔng3l▶️
Или вы про какие случаи?
Ioann_
И не понимаю почему всякие там рво и их отсутствие сразу песимизация ?
Arseny
Если возвращается локальная переменная, то в return std::move не нужен.
Vitaliy ◀️TriΔng3l▶️
Ну я бы всё равно явно предпочёл выражать свои намерения
Arseny
Потому что без std::move может быть copy elision, а с std::move - нет.
Vitaliy ◀️TriΔng3l▶️
Ааа
Arseny
При этом move конструктор может вызваться в обоих случаях
Ioann_
Я не очень понимаю логики. Объясните плиз
Ioann_
Почему если я возвращаю string
Ioann_
То мне не стоит делать std move f() ?
Arseny
Потому что без move будет не хуже, а возможно лучше
Arseny
Правда это все верно только если тип возвращаемого значения совпадает с типом возвращаемого значения функции. std::optional<std::vector<int>> f() { std::vector<int> x; ...; return std::move(x);} Вот тут move уже полезен.
Ioann_
Вот я знаю, что у строки есть move. Может и будет лучше, соглашусь. Но что на счет того, что у нас может и не вызваться ce ?
Ioann_
То есть есть ли гарантии того, что все будет имеено так как вы говорите, а не как обычно ?
cyberzx 🇷🇺
https://stackoverflow.com/a/14856553