Deques замедляет программу, если не используется? - PullRequest
0 голосов
/ 20 января 2011

Итак, у меня есть эта дека

deque <int> a[1001];

И просто добавьте элементы, используя

a[i].push_back(val);

И сотрите их, используя

a[i].pop_front();

Если я использую a[1001], это прекрасно работает, если я использую a[10001], это занимает несколько секунд, а если я использую a[100001], для выполнения программы требуется около 30 секунд.

Дело в том, что в каждом случае я только push_back, как 5 vals, единственная разница - размер deque.

Почему это?

Мне нужно только стереть элементы спереди, есть ли лучший способ? : D

Да, а также, сколько байтов использует элемент push_backed?: D (в этом типе deque)

1 Ответ

3 голосов
/ 20 января 2011
deque<int> a[1001];

Это не deque размера 1001, это скорее 1001 deques, каждый должен быть инициализирован и уничтожен, отсюда и медлительность. Вы создаете deque, как это:

deque<int> a;
a.push_back(2);
a.push_back(3);
a.push_back(5);
a.push_back(7);
a.pop_back(); // ...
...