2011-01-20 53 views
0

所以我有此双端deques减慢程序,如果不使用?

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(在这种类型的双端队列)

+0

`deque`是正确的结构,不管你访问的第一个双端队列或第10000,时间应该是一样的,双端队列的实例中,当然操作取决于有多少条记录 - 您确定时间是由流行和推送操作完成的吗? – Nim 2011-01-20 15:04:58

+3

你究竟在做什么*试图在这里完成? 100001 deques疯了! – 2011-01-20 15:05:10

回答

3
deque<int> a[1001]; 

这不是尺寸1001的双端队列,这是相当1001双端,每个人都必须被初始化和破坏,因此缓慢。您创建一个双端队列是这样的:

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