C++ 为什么向量和数组的大小给出不同的输出

C++ 为什么向量和数组的大小给出不同的输出,c++,arrays,vector,sizeof,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

当我尝试用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; 
}


#包括
#包括
使用名称空间std;
int main(){
向量num={1,2,5,4};
int k=sizeof(num)/sizeof(num[0]);

cout让我们看看sizeof返回的值:

查询对象或类型的大小

当应用于类类型时,结果是 该类加上放置此类对象所需的任何附加填充 在一个数组中


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


sizeof(向量)
返回vector类的大小。它不能按您期望的方式工作,原因与它不能在动态分配的数组上工作相同。

向量的大小不取决于元素的数量。您为什么要执行该输出?您是否阅读了
sizeof
的功能?预期为4-如果您说明为什么要执行编辑此输出,以便其他人知道您所犯的错误在哪里。简单的回答是
vector
不是数组。
sizeof(x)/sizeof(x[0]是合理的第一种解释)
是获取所有容器长度的方法,但这不是真的。@iabishek15——这样想吧,
大小就像知道一座大楼有多高一样。它不会告诉你大楼里有多少人,因为这可能会改变。