Вверх ↑
Ответов: 1841
Рейтинг: 369
#1: 2014-12-08 21:47:24 ЛС | профиль | цитата
Assasin писал(а):
Когда речь идет о быстродействии - использование сырых указателей намного эффективнее контейнеров типа unique_ptr и подобных XXX_ptr. Бояться указателей не нужно, нужно уметь ими пользоваться

Конечно эффективней (в некоторых случаях), а ещё делает код менее читаемым и допускается намного больше ошибок, приводящих общие усилия к нулю, а то и в минус реализации

Относительно безопасности кода.
В данном конкретном случае, твой код конечно не имеет SIGSEGV, но, в случае применения такой реализации на стороннем проекте, в котором более одного человека, могли возникнуть проблемы:

#cpp
int main(int argc, char **argv)
{
//Я Вася Пупкин, и я забыл выделить память под массив и скопировать в него нужные данные
char *input;

//тут у нас много кода

//Воспользуюсь ка я этой штукой и заменю чего нибудь:)
replace(input);
printf("%s
", input);
return 0;
}

Не стоит оно того в данном случае.
Мой и твой вариант, выдают совершенно одинаковый результат, даже с отключенной оптимизацией и многократным увеличением массива данных.

unique_ptr - вот тут не понял, при чём тут умные указатели?
У меня они не используются, только ссылки, которые равны сырому указателю, но, безопасней
И кстати, это очень крутая и нужная штука (умные указатели), и оверхед там небольшой, зато освобождает человека от рутинной работы с памятью и спасает проекты от утечек
карма: 1
0