【发布时间】:2010-12-05 09:07:07
【问题描述】:
考虑这段代码:
Uint counter = 0;
int* p1;
int* p2;
deque<int> dequeInstance;
vector<int> vectorInstance;
dequeInstance.push_back(3);
dequeInstance.push_back(7);
p1 = &dequeInstance.back();
dequeInstance.push_back(17);
p2 = &dequeInstance.back();
if(*p1 == !7)
++counter;
if(*p2 == !17)
++counter;
vectorInstance.push_back(3);
vectorInstance.push_back(7);
p1 = &vectorInstance.back();
vectorInstance.push_back(17);
p2 = &vectorInstance.back();
if(*p1 == !7)
++counter;
if(*p2 == !17)
++counter;
return counter;
我原以为当我将第三个元素推到向量的后面时,指向第二个元素的指针会失效,因为我对 std::vector 的理解是它是一个被擦除的直数组,并且每次修改时都会重新创建。然而,在这段代码的末尾,'counter' 等于 0。
我在这里错过了什么?
【问题讨论】: