博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sizeof(Vector<>)大小问题
阅读量:6982 次
发布时间:2019-06-27

本文共 1010 字,大约阅读时间需要 3 分钟。

先来看一个例子:

struct record{

     string name;
     int age;
     vector<int> grades;
};

则sizeof(record)大小为多少?

答案是:20(G++编译器下)

了解string,int的朋友很熟悉,string和int在G++下都是4字节,这样看来 grades的大小应为12字节。

给grades中放入三个整型值,100,110,120,sizeof(grades),竟然还是12!

由此说来,sizeof(vector<type>)的大小,跟容器里面存放多少数据无关,它是在编译期确定的一个值,仅跟具体的编译器有关。

用一段程序测试一下:

cout<<"sizeof(vector<char>) = "<<sizeof(vector<char>)<<endl;

cout<<"sizeof(vector<int>) = "<<sizeof(vector<int>)<<endl;
cout<<"sizeof(vector<short>) = "<<sizeof(vector<short>)<<endl;
cout<<"sizeof(vector<double>) = "<<sizeof(vector<double>)<<endl;
cout<<"sizeof(vector<long>) = "<<sizeof(vector<long>)<<endl;
cout<<"sizeof(vector<float>) = "<<sizeof(vector<float>)<<endl;
cout<<"sizeof(vector<bool>) = "<<sizeof(vector<bool>)<<endl;
cout<<"sizeof(vector<string>) = "<<sizeof(vector<string>)<<endl;

结果如下:

可以看出除了bool类型外,其他类型的容器大小均为12字节,经检测VC6.0下这个值是16,在VS2003以后该值是20.

所以,要想查看一个容器v的大小:

可以使用sizeof(v) + sizeof(T) * v.capacity();//T是v中元素类型

转载于:https://www.cnblogs.com/hello--the-world/archive/2012/05/07/2487372.html

你可能感兴趣的文章
C# 实现HTML转换成图片的方法
查看>>
访问本班同学的博客
查看>>
第一周
查看>>
ajax
查看>>
(转)mongodb分片
查看>>
深入理解javascript函数系列第二篇——函数参数
查看>>
<T extends Serializable>这是什么意思呢?看明白这个,你的问题就自然而然的明白了!...
查看>>
[转](不理想)Ubuntu下更改主显示器
查看>>
单元格编辑后级联汇总刷新
查看>>
汇编实验三
查看>>
费用保险单,如何失焦时自动补零
查看>>
[设计模式]外观模式
查看>>
贝塞尔曲线学习
查看>>
P4269 [USACO18FEB]Snow Boots G
查看>>
Exceptions Interview Questions
查看>>
《少年派的奇幻漂流》观后感
查看>>
Extjs:添加查看全部按钮
查看>>
UNIX/Linux系统管理技术手册(3)----bash 数组和算术运算
查看>>
LINQ之路19:LINQ to XML之X-DOM更新、和Value属性交互
查看>>
笔记之远程桌面服务(RDS)
查看>>