Контейнеры хороши тем, что с ними работать безопаснее, чем с указателями. А что там с эффективностью? Статья Do not waste time with STL vectors наглядно показывает, что push_back у vector - это весьма медленная операция (быстрее всего заполнять vector с помощью [] - как обычный массив). А вот инициализация вида
Кстати, чтоб push_back работал побыстрее, можно перед заполнением зарезервировать память (reserve()). Но если при этом еще и в конструкторе вектора указать длину - программа повиснет...
vector< int > v = {10, 23}
появилась только в C++11.Кстати, чтоб push_back работал побыстрее, можно перед заполнением зарезервировать память (reserve()). Но если при этом еще и в конструкторе вектора указать длину - программа повиснет...
Зато есть возможность проверки выхода за границу - используя at() вместо operator[] (как подсказывают здесь). Если происходит выход за диапазон - кидается исключение std::out_of_range (описано в < stdexcept >)
А в 17м C++ уже объявили std::iterator устаревшим. Подробнее - std::iterator is deprecated: Why, What It Was, and What to Use Instead
Вот так все быстро меняется...
А в 17м C++ уже объявили std::iterator устаревшим. Подробнее - std::iterator is deprecated: Why, What It Was, and What to Use Instead
Вот так все быстро меняется...
Комментариев нет:
Отправить комментарий