以下のコードでは、新しいメンバーが に挿入されるたびに、std::vector<int>A
メモリの再割り当てが原因std::vector<reference_wrapper<int>>B
で間違ったアドレスを指します。参照ベクトルを作成して再割り当てを追跡し、常に正しいアドレスを格納することは可能ですか?
#include <iostream>
#include <functional>
#include <vector>
using namespace std;
int main()
{
vector<int> A (0,3);
vector<reference_wrapper<int>> B;
B.push_back ( ref(A[0]) );
B.push_back ( ref(A[1]) );
B.push_back ( ref(A[2]) );
A.push_back (0);
cout << &A[0] << endl;
cout << &B[0].get() << endl;
return 0;
}