如果不使用deques减慢程序?

时间:2011-01-20 14:56:46

标签: c++ performance size deque

所以我有这个deque

deque <int> a[1001];

只需使用

添加元素即可
a[i].push_back(val);

使用

删除它们
a[i].pop_front();

如果我使用a[1001]它的效果很好,如果我使用a[10001]则需要几秒钟,如果我使用a[100001]则需要30秒才能执行程序。

问题在于,在每种情况下我都只有5个val的push_back,唯一的区别是deque的大小。

为什么?

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

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

1 个答案:

答案 0 :(得分:3)

deque<int> a[1001];

它不是1001的双端队列,而是1001个deques,每个都必须初始化和破坏,因此速度慢。你可以像这样创建一个双端队列:

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