Size: a a a

2021 February 08

D

Danya in pro.cxx
1. std::make_shared всё равно производит одну аллокацию вместо двух, если создавать через new + конструктор. У этого есть плюсы и минусы. Минус: когда был аллоцирован большой объект и все ссылки на него исчезли, а слабые ссылки — нет, то весь большой кусок памяти всё равно висит в оперативке из-за этих слабых ссылок
2. Чисто эстетически мне кажется make_shared выглядит лучше. Потому что при создании через конструктор у нас есть new, но нет delete. Несимметрично.
источник

ПК

Побитый Кирпич... in pro.cxx
mixa secret
Hello all, после c++17 std::make_shared можно не использовать?
не make_shared, а make_unique
источник

m

mixa secret in pro.cxx
Спасибо
источник

bt

baby tonight in pro.cxx
До c++17 тоже можно было не использовать
источник

m

mixa secret in pro.cxx
Непонял
источник

bt

baby tonight in pro.cxx
mixa secret
Непонял
Забей, всё уже сказали
источник

m

mixa secret in pro.cxx
Как лучше передавать строку в функцию, как const string& или string_view
источник

D

Danya in pro.cxx
std::string_view
, если функции владение строкой не передаётся, std::string, если передаётся
источник

ПК

Побитый Кирпич... in pro.cxx
mixa secret
Как лучше передавать строку в функцию, как const string& или string_view
Смотря какое у функции тело
источник

m

mixa secret in pro.cxx
Строку не надо изменять
источник

ПК

Побитый Кирпич... in pro.cxx
mixa secret
Строку не надо изменять
Если дальше по колстеку будет принятие по const std::string& или по сишной null-terminated const char*, то передавай как const std::string&
источник

m

mixa secret in pro.cxx
Спасибо
источник

m

mixa secret in pro.cxx
Никто не знает, когда std переведут на модули,
источник

D

Dmitriy in pro.cxx
Побитый Кирпич
Если дальше по колстеку будет принятие по const std::string& или по сишной null-terminated const char*, то передавай как const std::string&
Насчет сишной не согласен, второй случай внесет свои коррективы, да
источник

ПК

Побитый Кирпич... in pro.cxx
mixa secret
Никто не знает, когда std переведут на модули,
Через 3 года
источник

m

mixa secret in pro.cxx
Ок
источник

D

Dmitriy in pro.cxx
Интересно вот что...
Я точно знаю, что если функция принимает const string& и внутри не производит никаких копирований (пример - find у map), то при вызове от известной на этапе компиляции const char* компиль может убрать создание string
А прокатит ли такое с data(string_view), если содержимое последней также известно в compile-time?
И что с runtime - будет ли оптимизация, если содержимое const char*-строки на этапе компиляции не известно?
источник

m

mixa secret in pro.cxx
Ну это от компилятора наверно зависит
источник

m

mixa secret in pro.cxx
И от флагов
источник

m

mixa secret in pro.cxx
Я компилирую mingw без флагов оптимизации
источник