【发布时间】:2018-09-09 03:53:20
【问题描述】:
Deque 为访问任何元素(cpp reference)提供了恒定的复杂性。在 Vector 中,它始终是恒定的复杂性(vector 中第一个元素的地址 + 元素的数量 * 每个元素的大小),但它对 Deque 是如何工作的?双端队列元素在内存中是不连续的,那么它如何实现 O(1) 时间复杂度来访问任何元素呢?当我运行以下程序时,对于 Vector,它给出了正确的输出,但对于 Deque,它给出了一些任意数字(同意不给出正确的结果,因为元素不连续)。
vector<int> v1;
deque<int> d1;
for(int i =0; i < 1000000;++i)
v1.push_back(i);
for( int j =0; j < 1000000;++j)
d1.push_back(j);
cout << *(&v1[0] +90000) << endl; // output 90000
cout << *(&d1[0] +90000)<<endl; // Output is not 90000
【问题讨论】:
-
我觉得你链接的前几段应该回答你的问题......
标签: c++