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 效率高