<分区>
双端队列为访问任何元素提供了恒定的复杂性(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