0

所以我有这个双端队列

deque <int> a[1001];

并通过使用简单地添加元素

a[i].push_back(val);

并使用擦除它们

a[i].pop_front();

如果我使用a[1001]它效果很好,如果我使用a[10001]它需要几秒钟,如果我使用a[100001]它需要大约 30 秒来执行程序。

问题是,在每种情况下,我都只 push_back 5 个 val,唯一的区别是双端队列的大小。

为什么?

我只需要从前面擦除元素,有没有更好的方法?:D

哦,还有,push_backed 元素使用多少字节?:D(在这种类型的双端队列中)

4

1 回答 1

3
deque<int> a[1001];

It's not a deque of size 1001, it's rather 1001 deques, each must be initialized and destructed, hence the slowness. You create a deque like this:

deque<int> a;
a.push_back(2);
a.push_back(3);
a.push_back(5);
a.push_back(7);
a.pop_back(); // ...
于 2011-01-20T15:01:29.350 回答