【发布时间】:2011-06-12 12:38:03
【问题描述】:
所以我有这个双端队列
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(在这种双端队列中)
【问题讨论】:
-
deque是正确的结构,无论你访问第一个deque还是第10000个,时间应该是一样的,在一个deque的实例内,操作当然取决于有多少条目- 你确定pop和push操作占用了时间吗? -
您实际上想在这里完成什么? 100001 双端队列太疯狂了!
-
我有 100.001 个不同的键,我必须为每个键添加和删除值。你有更好的解决方案吗? ;\
-
Cristy:将所有这些键都保存在内存中听起来很难 - 尝试使用数据库代替 - 也许是 sqlite3?
-
旁注,Debug模式下编译和运行会比Release慢很多。
标签: c++ performance size deque