array
против std::queue
, что лучше с точки зрения времени и почему?Почему массив считается лучше, чем контейнеры STL?
Я написал один алгоритм обработки графа, в котором граничные вершины хранятся в std::queue
и доступны с использованием push_back()
и pop_front()
. Когда я повторно реализовал границу с массивом с передними и конечными указателями, указывающими на начало и конец пограничных вершин, я получаю лучший результат с точки зрения времени. Является ли массив действительно быстрее, чем очередь, для большого размера данных?
Вы сравниваете яблоки с апельсинами. Если вам нужна структура очереди, зачем использовать что-то, что не является очередью? – NathanOliver
Доступ к элементам в массиве и в векторе - это O (1). Разница во времени, если вообще что-то, незначительна. Что * * отличается друг от друга тем, что вектор * динамический *, когда вы добавляете элементы в вектор, ему может потребоваться изменить его размер, включая копирование существующих данных. Это может быть медленным. Если вы знаете приблизительно количество необходимых элементов, вы можете зарезервировать эту сумму для вектора, а разность скоростей будет равна примерно нулю. Если вы хотите использовать контейнер с фиксированным количеством элементов времени с компиляцией, вместо этого используйте 'std :: array'. –
Один статический, другой динамический. –