std :: vector的对象是在堆栈(或静态内存)中创建的,如果你不打算使用operator new在堆中有意创建它们.但是向量包含的项目是在堆中创建的.例如,您在某个函数中按以下方式定义向量
std::vector<int> v( 100 );
Run Code Online (Sandbox Code Playgroud)
然后变量v被放置在堆栈中.但是,v的对象本身会分配一个足够大的堆,以容纳100个int类型的元素.
您可以使用operator size来确定std :: vector本身占用对象的内存量.试试这段代码
std::vector<int> v( 100 );
std::cout << sizeof( v ) << std::endl;
Run Code Online (Sandbox Code Playgroud)
正如您将看到std :: vector类型的对象的大小不依赖于对象可以操作的项目数.