为什么sizeof向量和array给出不同的输出

时间:2019-10-15 17:03:51

标签: c++ arrays vector sizeof

当我尝试通过sizeof获取元素时,那么我在数组和向量中得到了不同的答案

#include<iostream>
#include<vector>
using namespace std;

int main(){
    vector<int> num = {1,2,5,4};
    int k = sizeof(num)/sizeof(num[0]);
    cout << k << endl;
    int nums[] = {1,2,5,4};
    int w = sizeof(nums)/sizeof(nums[0]);
    cout << w << endl; 
}


预计4 4

输出3 4

1 个答案:

答案 0 :(得分:0)

让我们看看sizeof会返回什么:

  

sizeof查询对象或类型的大小。

     

应用于类类型时,结果是对象的大小   该类以及放置此类对象所需的任何其他填充   在一个数组中。


vector<int>int []是完全不同的东西。向量使用动态存储,而数组使用自动存储。

sizeof(vector)返回向量类的大小。出于同样的原因,它无法按预期方式运行,因为它无法在动态分配的数组上运行。

相关问题