-1
在下面的代碼中,無論何時將新成員插入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;
}
這是什麼用途?你不能只保存迭代器而不是引用? – cerkiewny 2014-09-01 10:17:43
@cerkiewny迭代器也會失效。 – juanchopanza 2014-09-01 10:18:01
@cerkiewny:這會有幫助嗎?迭代器通常至少與引用一樣無效。 – 2014-09-01 10:18:40