LINUX.ORG.RU

default-inserted значения для простых типов

 


0

2

http://en.cppreference.com/w/cpp/container/vector/resize

здесь пишут:

If the current size is less than count, 1) additional default-inserted elements are appended 2) additional copies of value are appended

Правильно я понимаю, что для простых типов (char, int, double, Class*) значение вставки по умолчанию будет неопределённым? Или он, std::vector::resize( size_type count), всё же, занулит их?

★★★★★

GCC и шланг занулят, но по стандарту емнип это UB. Точно не помню, гуглить сейчас неудобно: я с мобилы.

DELIRIUM ☆☆☆☆☆
()

В стандарте написано

Effects: If sz <= size(), equivalent to erase(begin() + sz, end());. 
If size() < sz, appends sz - size() value-initialized elements to the sequence.

то есть они будут инициализированы. Как при объявлении std::vector<float> f(100); будет сотня 0.0

anonymous
()
Ответ на: комментарий от anonymous

Кстати есть явное задание значения

void resize(size_type sz, const T& c);
Effects:
  if (sz > size())
    insert(end(), sz-size(), c);
  else if (sz < size())
    erase(begin()+sz, end());
  else
    ; // do nothing
anonymous
()
Ответ на: комментарий от anonymous

да, я думал об этом. но ведь reserve не изменяет size, он изменяет capacity. по идее, reserve() + push_back() должен быть чуть медленнее, чем resize() + []. потому, что в первом случае будет постоянно инкрементироваться size и сравниваться с capacity, а во втором случае — нет.

или я не прав?

next_time ★★★★★
() автор топика

additional default-inserted elements are appended

Какая буква не понятна?

slovazap ★★★★★
()
Ответ на: комментарий от next_time

по идее, reserve() + push_back() должен быть чуть медленнее, чем resize() + []. потому, что в первом случае будет постоянно инкрементироваться size и сравниваться с capacity, а во втором случае — нет.

На столько «медленее», что тебе об этом париться не нужно от слова «совсем»

anonymous
()
Ответ на: комментарий от next_time

reserve() + push_back() должен быть чуть медленнее, чем resize() + []

Конечно, это очень важно :-) Посвяти ещё месяц на обдумывание скорости решения на цепепе для своей сверхважной задачи :-) Лол :-)

anonymous
()
Ответ на: комментарий от next_time

свой напиши, если супер-перформанс нужен. кстати, хихикуны вряд ли смотрели в то, что идёт линкеру. синергетический эффект от такого рода манипуляций может быть весомый.

dzidzitop ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.