Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > про string и vector


Автор: Alastis 20.11.2004, 20:36
Липман в своей книге рекомендует использовать практически всегда вместо встроенных типов
строки и массива типами из стандартной библиотеки string и vector соответсвенно. Очевидно, что пользоваться типами из STL пользоваться гораздо удобнее (особенно начинающим программистам, таким как яsmile), но почему то в примерах, в основном, я вижу, что чаще применяются именно встроенные типы. В факе я прочитал, что реализации типов из STL к тому еще и быстрее. Так значит стоит отказаться от применения встроенных типов и полностью перейти на STL - вские? А в каких случаях делать этого не стоит? Заранее спасибо.

Автор: chipset 20.11.2004, 21:44
В случаях когда делаешь массивы базовых типов (int, float) то я обычно делаю по старинке:
Код

int i[20];

В том случае когда используешь свои классы то вектор.
Насчёт string, мне кажется он должен вытеснять char*

Автор: bel_nikita 21.11.2004, 02:35
Alastis
Цитата
В факе я прочитал, что реализации типов из STL к тому еще и быстрее.
Быстрее - имется ввиду, быстрее тех, которые ты сам будешь определять. Т.к. в STL каждая строчка, каждый кусок кода отточен и оптимизирован.

Цитата
Так значит стоит отказаться от применения встроенных типов и полностью перейти на STL - вские?
Нет, ни в коем случае. Встроенными типами в С++ являются все типы, кроме классов и структур smile Т.е. char, int, unsigned, long, double, ...
STL - должна дополнять твой код. Она содержит и предоставляет набор стандартный классов и интерфесов. И тебе нет необходимости изобретать велосипед ввиде векторов, деков, очередей, а так же заниматься отладкой этих контейнеров. Т.е. работаешь на более высоком уровне абстракции и тебя не интересует, что там внутри.
Если хочешь организовать массив строк или классов, то лучше использовать std::vector. Но если хочешь использовать массив из пяти-десяти int'ов, типа: int iArray[5];, то тянуть за собой STL контейнер не следует.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)