c++ vector 内存布局
先上代码
int main() {
vector<int> arr = {1, 2, 3, 4};
int* start = (int*)(*((long long*)&arr));
int* end = (int*)(*((long long*)&arr)) + arr.size();
while(start != end) {
cout << start << "\t" <<*start << endl;
++start;
}
cout << endl;
auto x = arr.begin();
auto y = arr.end();
while(x != y) {
cout << &(*x) << "\t" << *x << endl;
x++;
}
}
输出

vector 有内部有两个指针,start, end
指向一块连续的内存,这块内存是真正存储数据的地方
plus: vector move 的时候就直接更改指针,所有 move 效率高