Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2010, 10:49   #1
coinkrsk
пыжашийся нуб
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 93
По умолчанию Быстродействие инструментов С++

Добрый день. Только начинаю разрабатывать свои перые более-менее серьезные проекты на С++ и конечно появляется множество вопросов. Одни из злободневных - быстродействие тех или иных элементов. Например: можно сделать клсс - шаблоном, или не делать. Можно использовать тот или иной контейнер из STL или обойтись массивом, или вообще хранить часть информации в int`е как в не небольшом булевом массиве. В общем я плыву в многообразии инструментов и возможностей с помощью которых можно осуществить то или иное действие. По сути сейчас нахожусь на уровне человека хорошо и с пониманием прочитавшего пару книжек для новичков. Куда мне развиваться дальше? Что читать?
coinkrsk вне форума Ответить с цитированием
Старый 07.10.2010, 13:13   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Читайте форум и MSDN. Инструменты имеют свойства. И каждый из инструментов по свойствам подходит для конкретного класса задач.
Например, что лучше - std::list или std::vector?
По сути - контейнеры для элементов. Однако, в зависимости от задачи один может быть эффективнее другого.
Если вам нужно часто удалять/добавлять элементы в большой контейнер, то лучше будет list, потому что в vector при удалении из середины нужно сдвигать весь оставшийся массив на одну позицию влево.
И так далее.
По поводу шаблонов - если они вам нужны, делайте. Не нужны - не делайте.
MaTBeu вне форума Ответить с цитированием
Старый 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++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстродействие 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