C ++ stl коллекции или связанные списки - PullRequest
1 голос
/ 16 марта 2010

Я разрабатываю симуляцию на основе OpenGL в C ++. Сейчас я оптимизирую свой код и вижу во всем коде частое использование std: list и std: vector. Что является более эффективным: продолжать использовать структуры данных stl C ++ или связанный список указателей? Основная операция, которая включает в себя std :: list и std :: vector, заключается в открытии итератора и циклическом просмотре всех элементов в структурах данных и применении некоторой обработки

Ответы [ 2 ]

5 голосов
/ 16 марта 2010

Как насчет stl-контейнеров указателей?

Маловероятно, что вы сможете разрабатывать более эффективные структуры, чем встроенные. Единственный недостаток - контейнеры на самом деле содержат копии объектов, хранящихся в них. Если вы беспокоитесь об этих затратах памяти (множественные структуры, размещающие несколько копий одних и тех же объектов, нарушая согласованность по всей таблице), вам следует подумать об использовании stl-структур указателей на то, что вам нужно.

С точки зрения алгоритма, необходимая структура реализована в stl, поэтому вы должны ее использовать. Нет необходимости переопределять ту же структуру.

4 голосов
/ 16 марта 2010

Используйте структуры данных C ++ STL, но используйте их эффективно. Если вы используете std :: list и std :: vector, найдите такие функции, как find, for_each, накопить и т. Д. Вот хорошее чтение: http://www.cplusplus.com/reference/

Прочитайте разделы об алгоритме, числовом и функциональном. Кроме того, я настоятельно рекомендую «Эффективный STL» Скотта Майерса.

...