Size: a a a

2020 June 03

m

magras in pro.cxx
Александр Караев
не, в v.push_back(v.front()) проблемы нет, как заметил комментатор - std позаботился об этом
Вроде там UB из-за того, что референс инвалидируется при ресайзе. Но если assert(v.size() < v.capacity()); код корректный.
источник

АК

Александр Караев... in pro.cxx
magras
Вроде там UB из-за того, что референс инвалидируется при ресайзе. Но если assert(v.size() < v.capacity()); код корректный.
стандарт гарантирует, что методы вектора, принимающие ссылки/указатели на элементы самого вектора должны обрабатываться корректно
источник

АК

Александр Караев... in pro.cxx
magras
Вроде там UB из-за того, что референс инвалидируется при ресайзе. Но если assert(v.size() < v.capacity()); код корректный.
референс инвалидируется, но за этим должна следить библиотека. либо делать копию заранее, либо смотреть, куда уйдёт этот референс после реаллокации
источник

АК

Александр Караев... in pro.cxx
magras
Вроде там UB из-за того, что референс инвалидируется при ресайзе. Но если assert(v.size() < v.capacity()); код корректный.
я задавал этот вопрос и провёл потом расследование.
полистай, там много ссылок есть
https://t.me/ProCxx/319518
источник

АК

Александр Караев... in pro.cxx
в частности:
> То есть шланг действительно умный - если видит, что элемент вектора вставляем, он забивает на сам аргумент и отслеживает его перемещения внутри самого вектора
источник

N

Neargye in pro.cxx
Александр Караев
я задавал этот вопрос и провёл потом расследование.
полистай, там много ссылок есть
https://t.me/ProCxx/319518
О спасибо, тоже интересовало, но не особо копал ибо сам так еще не писал)
источник

m

magras in pro.cxx
Александр Караев
я задавал этот вопрос и провёл потом расследование.
полистай, там много ссылок есть
https://t.me/ProCxx/319518
гм. Спасибо. Не уверен, что я согласен с таким решением комитета, хотя оно спасло много ног в том числе моих. Но не смотря на это, KISS и простые правила мне больше по душе.
источник

m

magras in pro.cxx
Ну и пример из видео демонстрирует, почему такое решение - это лишь полумера.

Тем не менее спасибо за ссылки. Это было интересно.
источник

MM

Medved Medvedievich in pro.cxx
Александр Караев
я задавал этот вопрос и провёл потом расследование.
полистай, там много ссылок есть
https://t.me/ProCxx/319518
Саша, тоже присоединюсь к общему "спасибо", это было интересное исследование.
источник

CD

Constantine Drozdov in pro.cxx
Александр Караев
в частности:
> То есть шланг действительно умный - если видит, что элемент вектора вставляем, он забивает на сам аргумент и отслеживает его перемещения внутри самого вектора
Вроде все в итоге пришли, что достаточно реаллокацию проводить начиная с нового элемента, а вставку в середину делать через в конец, нет?
источник

CD

Constantine Drozdov in pro.cxx
magras
гм. Спасибо. Не уверен, что я согласен с таким решением комитета, хотя оно спасло много ног в том числе моих. Но не смотря на это, KISS и простые правила мне больше по душе.
KISS это правило, о котором в плюсах давно можно забыть
источник

АК

Александр Караев... in pro.cxx
Constantine Drozdov
Вроде все в итоге пришли, что достаточно реаллокацию проводить начиная с нового элемента, а вставку в середину делать через в конец, нет?
а как тебе поможет вставка в середину через конец, если ты делаешь v.insert(v.begin() + 2, v[5])? тут нельзя не проифать, лежит ли вставляемое значение в векторе
источник

CD

Constantine Drozdov in pro.cxx
Александр Караев
а как тебе поможет вставка в середину через конец, если ты делаешь v.insert(v.begin() + 2, v[5])? тут нельзя не проифать, лежит ли вставляемое значение в векторе
Ты в конец вставляешь и потом двигаешь, если релокации нет все хорошо, если есть ты копируешь в новую память сразу же, ещё ни один объект value_type не затронут
источник

АП

Александр Порада... in pro.cxx
Всем привет) Не уверен, по адресу я зашёл или нет) Но вопрос такой - кто-то интегрировал Windows Error Reporting или Google BreakPad в плюсовое приложение? Интересно мнение сталкивавшихся
источник

DM

Dmitry M in pro.cxx
Google BreakPad классная штука. В принципе работает.
источник

IZ

Ilia Zviagin in pro.cxx
Александр Порада
Всем привет) Не уверен, по адресу я зашёл или нет) Но вопрос такой - кто-то интегрировал Windows Error Reporting или Google BreakPad в плюсовое приложение? Интересно мнение сталкивавшихся
Мы тоже интегрировали, отлично работает.
источник

IZ

Ilia Zviagin in pro.cxx
Александр Порада
Всем привет) Не уверен, по адресу я зашёл или нет) Но вопрос такой - кто-то интегрировал Windows Error Reporting или Google BreakPad в плюсовое приложение? Интересно мнение сталкивавшихся
Но я тебе по этому делу ничего не могу сказать....
источник

АП

Александр Порада... in pro.cxx
Ilia Zviagin
Мы тоже интегрировали, отлично работает.
Google Break Pad?
источник

АК

Александр Караев... in pro.cxx
Constantine Drozdov
Ты в конец вставляешь и потом двигаешь, если релокации нет все хорошо, если есть ты копируешь в новую память сразу же, ещё ни один объект value_type не затронут
опиши случай без реаллокации пошагово на примере v = { 0, 1, 2, 3 }; v.insert(v.begin(), v[2]);, я не понимаю тебя
источник

CD

Constantine Drozdov in pro.cxx
Александр Караев
опиши случай без реаллокации пошагово на примере v = { 0, 1, 2, 3 }; v.insert(v.begin(), v[2]);, я не понимаю тебя
Какие у тебя вообще могут быть проблемы кроме релокации?
источник