Многие любят использовать шаблон vector, везде, где только можно, не смотря на то, для чего он используется. Он вроде бы и как массив, и в тоже время лучше. Плюсы, несомненно, есть и я пожалуй начну с них:
- Всё уже сделано и проверено за программиста - пожалуй самый главный плюс, ведь преодолеть лень бывает трудно.
- Внешне работа с vector мало чем отличает от работы с массивом - это удобно.
- Это стандартная библиотека - можно назвать под разделом первого пункта, но лучше выделить.
- Vector - это шаблон и позволяет работать почти со всеми типами данных.
- Не смотря на всю схожесть, vector - это не массив. Элементы vector'а хранятся в памяти не последовательно, а значит при обходе элементов последовательно, память может обходится в случайном порядке. Для небольшого количества данных это не заметно, однако чем больше - тем заметнее как уменьшается скорость работы программы.
- Vector реализует линейный список. Это минус скорее всего не вектора, а программистов, сильно полюбивших его, и использующих vector везде. Иногда данные представляют собой не линейную последовательность, а более сложную - некоторый граф(и, конечно, его частные случаи - сеть, дерево и т.д.) и лучше бы создать(либо найти уже готовую) свою структуру данных, которая будет подходить для задачи.
- Vector - шаблон. Проблемы начинаются, когда работа ведётся с векторными типами данных и классами/структурами содержащими их, ссылки на них и так далее. Справедливости ради, стоит заметить что использовании SSE-раширений всегда есть некоторые проблемы, однако незнание внутреннего устройства vector'а усугубляет их.
Комментариев нет:
Отправить комментарий