は、コードのこの部分を考慮してくださいC++ STLコンテナとポインタ有効
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'はゼロに等しい。
私はここで何が欠けていますか?うまくいけば、パフォーマンスのため
標準では、 'push_back'の償却された一定時間を保証しています。つまり、毎回「ベクトル」のサイズを変更することはできません。希望はここでは必要ありません:) – fredoverflow