|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.10.2010, 10:49 | #1 |
пыжашийся нуб
Пользователь
Регистрация: 19.06.2010
Сообщений: 93
|
Быстродействие инструментов С++
Добрый день. Только начинаю разрабатывать свои перые более-менее серьезные проекты на С++ и конечно появляется множество вопросов. Одни из злободневных - быстродействие тех или иных элементов. Например: можно сделать клсс - шаблоном, или не делать. Можно использовать тот или иной контейнер из STL или обойтись массивом, или вообще хранить часть информации в int`е как в не небольшом булевом массиве. В общем я плыву в многообразии инструментов и возможностей с помощью которых можно осуществить то или иное действие. По сути сейчас нахожусь на уровне человека хорошо и с пониманием прочитавшего пару книжек для новичков. Куда мне развиваться дальше? Что читать?
|
07.10.2010, 13:13 | #2 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Читайте форум и MSDN. Инструменты имеют свойства. И каждый из инструментов по свойствам подходит для конкретного класса задач.
Например, что лучше - std::list или std::vector? По сути - контейнеры для элементов. Однако, в зависимости от задачи один может быть эффективнее другого. Если вам нужно часто удалять/добавлять элементы в большой контейнер, то лучше будет list, потому что в vector при удалении из середины нужно сдвигать весь оставшийся массив на одну позицию влево. И так далее. По поводу шаблонов - если они вам нужны, делайте. Не нужны - не делайте. |
07.10.2010, 13:34 | #3 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Если еще не читали Страуструпа - почитайте. Также могу посоветовать почитать Мейерса - Effective C++ и More Effective C++ (у нас они переводились как "Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ" и "Эффективное использование C++. 50 рекомендаций по улучшению ваших программ и проектов" соответственно).
Как правило, инструменты C++ достаточно быстры, т.к. быстрота является одним из столпов, на которых держится этот язык. Вы можете написать более быстрый код на основе более низкоуровневых средств, но вам придется весьма активно поработать. Что касается контейнеров, то vector - это обычный массив, характеризующийся быстрым доступом по индексу, автоматизацией управления памятью, медленным изменением размеров. list - отсутствие индексации, быстрая вставка и удаление как из середины, так и с концов. stack и queue - это стек и очередь, комментарии здесь излишни. deque - скорость доступа по индексу сравнима с таковой у вектора, скорость работы с концами (добавление и удаление) - с таковыми у списка, операции с серединой - также (не)эффективны, как у вектора. map - ассоциативный массив, т.е. примерно тот же вектор, только в качестве индекса используется не число (номер элемента), а значение произвольного типа (например, строка). Часто используется как словарь. set - множество, почти тот же map, только здесь важен только индекс - есть член с таким индексом или нет. Ну и еще есть несколько контейнеров, используемых чуть реже, я с ними особо не знаком. Соответственно, используйте тот контейнер, который подходит под ваши конкретные задачи - они все заточены под разные варианты использования.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Быстродействие VBA | Sasha_Smirnov | Microsoft Office Word | 24 | 06.12.2012 13:35 |
тестирование микропроцессора на быстродействие | swatkiev | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 16.09.2010 08:20 |
Быстродействие | sxerox | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 19.04.2010 18:53 |
быстродействие Access по сети | Tatu | Microsoft Office Access | 2 | 20.10.2009 13:48 |