Size: a a a

cxx.Дискуссионная

2020 April 02

а

акварель на мету... in cxx.Дискуссионная
Ruben
джуны постоянно так делают на работе, только у них тип возврата char* 🤷‍♂️
да ну
источник

а

акварель на мету... in cxx.Дискуссионная
это бегинер какой-то а не джун
источник

R

Ruben in cxx.Дискуссионная
еще в функции работы со строками сишные любят засовывать буфер с raw данными
источник

Е

Егор in cxx.Дискуссионная
акварель на мету
это бегинер какой-то а не джун
Да тут постоянно так, то норм джун это Айдар, то норм джун это учащий язык 15 минут
источник

R

Ruben in cxx.Дискуссионная
типа есть бинарные данные в буфере, и по нему проходят strlen, strcpy...
источник

R

Ruben in cxx.Дискуссионная
Кстати, подскажете способ пройтись по всем элементам std::map, при условии что на каждой итерации возможно удаление произвольных элементов и добавление?
источник

R

Ruben in cxx.Дискуссионная
Итераторы при этом инвалидируются...
источник

R

Ruben in cxx.Дискуссионная
Сейчас у меня эта проблема решена копированием в другой std::map, который константный. Но это не совсем верно, помимо накладных расходов, удаление элементов должно учитываться немедленно
источник

R

Ruben in cxx.Дискуссионная
То есть если элемент из мапы удалили, он ни в коем случае уже не должен встретиться на итерации
источник

Е

Егор in cxx.Дискуссионная
Ruben
Кстати, подскажете способ пройтись по всем элементам std::map, при условии что на каждой итерации возможно удаление произвольных элементов и добавление?
просто берешь и итерируешься
источник

Е

Егор in cxx.Дискуссионная
даже на цппрефе пример есть https://en.cppreference.com/w/cpp/container/map/erase
источник

R

Ruben in cxx.Дискуссионная
это я видел) но не все так просто, элемент может быть удален где-то в другой функции
источник

R

Ruben in cxx.Дискуссионная
на std::map у меня планировщик задач построен, в мапе хранятся функторы — задачи. Проблема в том, что когда запускается задача — она неизвестно в каком месте должна иметь возможность добавить другую задачу или удалить из планировщика
источник

R

Ruben in cxx.Дискуссионная
ну а в качестве ключа — время запуска + nonce
источник

R

Ruben in cxx.Дискуссионная
Егор
даже на цппрефе пример есть https://en.cppreference.com/w/cpp/container/map/erase
с добавлением элемента аналогичный вариант все равно не прокатывает, тем более
источник

R

Ruben in cxx.Дискуссионная
суть в том, что пока мы на одном элементе, ЛЮБОЙ другой может быть удален, или добавлен новый
источник

Е

Егор in cxx.Дискуссионная
Ruben
суть в том, что пока мы на одном элементе, ЛЮБОЙ другой может быть удален, или добавлен новый
у тебя многопоток там?
источник

R

Ruben in cxx.Дискуссионная
однопоток
источник

R

Ruben in cxx.Дискуссионная
мы вызываем функтор, а дальше этот функтор имеет право пойти неведомыми путями и сделать что угодно, map должен быть доступен для записи, короче
источник

R

Ruben in cxx.Дискуссионная
создание константой копии частично проблему решило, но есть риск после удаления вызвать уже мертвый объект
источник