关于矢量存储器

时间:2017-05-04 00:57:09

标签: c++ vector

我正在学习矢量如何在c ++中工作,并编写了一个示例程序,试图了解如何处理带向量的内存。

#include <iostream>
#include <vector>

int main()
{

//Test 1:
double n = 3.5;
std::vector<double> test;
std::cout <<  sizeof(test) << std::endl;
test.push_back(n);    
std::cout << sizeof(test) << std::endl;

std::cout << std::endl;
   std::cout << std::endl;
      std::cout << std::endl;

//Test 2


std::vector<int> test2;
std::cout << sizeof(test2) << std::endl;
for (int i = 0; i < 1000; i++) {

 test2.push_back(i);   

}

 std::cout << sizeof(test2) << std::endl;
}

有趣的是,程序打印出24作为每次存储的字节数。尽管向向量添加了新元素。当向量添加元素到向量之后,向量在最初声明时的占用内存量是多少?

1 个答案:

答案 0 :(得分:3)

在内部,vector对象具有指向包含元素的动态分配内存的指针。当你使用sizeof(test)时,你只是获得包含指针的结构的大小,它所指向的内存大小不包括在内。

必须动态分配此内存,以便向量可以根据需要增长和缩小。类对象不可能改变它的大小。

要获取数据存储使用的内存量,请使用sizeof(double) * test.capacity()