что лучше вообще, карта или вектор в с ++? - PullRequest
0 голосов
/ 07 мая 2010

Как я знаю, доступ к элементу в векторе занимает постоянное время, а в карте - логарифмическое время. Однако хранение карты требует меньше памяти, чем хранение вектора.

Поэтому я хочу спросить, какой из них лучше вообще? Я рассматриваю возможность использования одного из этих двух элементов в моей программе, которая содержит около 1000 элементов. Я планирую использовать 3-мерный вектор, который будет принимать 1000x1000x1000 элементов.

Ответы [ 11 ]

0 голосов
/ 08 мая 2010

Если ваша трехмерная матрица будет малонаселенной (то есть в основном нулями), тогда вас заинтересует boost::ublas::sparse_matrix. Если я правильно помню, по умолчанию он использует std::map в качестве основного контейнера. Он предоставляет операторы для легкой индексации строк / столбцов (а также итераторы строк / столбцов / элементов).

РЕДАКТИРОВАТЬ: Неважно, я думал, что Boost :: Ublas были 3D-матрицы. Кажется, что нет. Также кажется, что sparse_matrix был заменен новыми типами матриц, имеющими разреженную память. Я давно не пользовался этой библиотекой.

Вы все еще можете взглянуть на Boost.uBlas, чтобы вдохновиться на создание своей собственной разреженной трехмерной матрицы.

...