在探讨`sizeof(vector)`为何输出为32时,关键在于理解`vector`在不同平台和编译器上的实现细节。通常,输出大小取决于`vector`底层数据结构和内存布局。在某些环境中,输出为24字节,而在文中测试的环境下,输出为32字节。此差异源于平台和编译器对`vector`类的实现。首先,明确`sizeof(vector)`的输出...
对应vector<int> _Tp也就是int,_Alloc也就是std::allocator<int>,向上回看_Tp_alloc_type的定义,...
对应vector<int> _Tp也就是int,_Alloc也就是std::allocator<int>,向上回看_Tp_alloc_type的定义,...
答案是:20(G++编译器下) 了解string,int的朋友很熟悉,string和int在G++下都是4字节,这样看来 grades的大小应为12字节。 给grades中放入三个整型值,100,110,120,sizeof(grades),竟然还是12! 由此说来,sizeof(vector<type>)的大小,跟容器里面存放多少数据无关,它是在编译期确定的一个值,仅跟具体的编译器有...
sizeof是vector本身的大小(sizeof(vector<int>)) capacity - 容器的成员函数capacity()取得 max_size - 容器的成员函数max_size()取得 size()告诉你容器中有多少元素。它没有告诉你容器为它容纳的元素分配了多少内存。 capacity()告诉你容器在它已经分配的内存中可以容纳多少元素。那是容器在那块内存中总共可以容...
size() 是当前vector容器真实占用的内存大小,也就是容器当前拥有多少个元素; capacity() 是指在发生realloc前能允许的最大元素数,也即预分配的内存空间。 运行结果如下图所示: 发现sizeof(vec) 为24,并不等于 10 * sizeof(int) = 40。这是为什么呢?
其实不管怎么写,vector的静太大小是一样的,下面这些写法返回值是一样的 vector<int> v(1000);printf ("%u\n", sizeof( vector<int>(100000) ));printf ("%u\n", sizeof( vector<int> ));printf ("%u\n", sizeof( vector<char> ));printf ("%u\n", sizeof( v ));
vector<int>arr2(2,0); vector<int>arr3(3,0); cout<<sizeof(arr1)<<" "<<sizeof(arr2)<<" "<<sizeof(arr3)<<endl; 输出: 24 24 24 可以看到不管vector有多少元素,输入都是24,为啥? 这是因为 vector 是C++标准库中的容器类,其内部实现了三个指针, ...
}intsize =sizeof(vec) /sizeof(int); 1. 2. 3. 4. 5. 6. 程序的运行结果是size=4(sizeof(vec)=16,sizeof(int)=4)而不是size=100。这让我很惊讶,因此我又进行了下边的实验: vector<int>vec_int; vector<char>vec_char; vector<double>vec_double;intsize_vec_int =sizeof(vec_int);intsiz...
vector.size()指的是vector的使用大小,比如说10个盒子,用了8个,vector.size()就等于8 vector.capacity()指的是总大小,上一个例子里,vector.capacity()等于10 sizeof(vector)取决于vector里面存放的数据类型,10个bool就是10个字节,计算起来等于vector.capacity()*单个数据类型大小 ...