`
jishublog
  • 浏览: 872157 次
文章分类
社区版块
存档分类
最新评论

sizeof(string)---容器string类型的大小

 
阅读更多

刚看到《程序员面试宝典》中有一个表达式说sizeof(string)大小是4,感到很是诧异,因为string容器的大小和string的实现有关,string类不是内置数据类型,而是一个模版类,所以它的大小和类的实现有关,具体我做了以下测试:

//source
cout<<sizeof(string) <<endl;
cout<<sizeof(vector<char>)<<endl;

//编译器:VS2008
//平台:X86
//outcome
32
20

//编译器:gcc 4.1.2
//平台:X86
//outcome
4
12

//编译器:gcc 4.1.2
//平台:X86_64
//outcom
8
24


由上面可知string类在不同的库中以及不同的平台下,长度是不一样的。在测试string的同时测试了vector容器的大小,同样可以得出上面的结论

由此可知《程序员面试宝典》中说sizeof(string)大小是4是有问题的。


分享到:
评论

相关推荐

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

     3.2 标准库类型string 75  3.2.1 定义和初始化string对象 76  3.2.2 string对象上的操作 77  3.2.3 处理string对象中的字符 81  3.3 标准库类型vector 86  3.3.1 定义和初始化vector对象 87  3.3.2 向vector...

    C++Primer(第5版 )中文版(美)李普曼等著.part2.rar

     3.2 标准库类型string 75  3.2.1 定义和初始化string对象 76  3.2.2 string对象上的操作 77  3.2.3 处理string对象中的字符 81  3.3 标准库类型vector 86  3.3.1 定义和初始化vector对象 87  3.3.2 向vector...

    【全新正版】现代C++程序设计(原书第2版)

    2.4.2 容器=数据类型,标签=变量名 2.4.3 数据类型修饰符 2.4.4 问题分析:整型数据究竟有多大 2.5 C++中的变量声明 2.5.1 C++的命名规则 2.5.2 在哪里声明变量 2.6 C++中的运算符 2.6.1 计算路程的程序 2.6.2 从...

    C++ Primer第四版【中文高清扫描版】.pdf

    9.3.5 容器大小的操作 278 9.3.6 访问元素 279 9.3.7 删除元素 280 9.3.8 赋值与swap 282 9.4 vector容器的自增长 284 9.5 容器的选用 287 9.6 再谈string类型 289 9.6.1 构造string对象的其他方法 290 9.6.2 修改...

    非常经典的c++ primer视频教程6-10

    7.2.3 vector和其他容器类型的形参 7.2.4 数组形参 7.2.5 传递给函数的数组的处理 7.2.6 main:处理命令行选项 7.2.7 含有可变形参的函数 7.3 return语句 7.3.1 没有返回值的函数 7.3.2 具有返回值的函数 ...

    C# for CSDN 乱七八糟的看不懂

    C#(WINFORM)学习 一、 C#基础 基础 类型和变量 类型和变量 类型 C# 支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如 char、int 和 float 等)、枚举类型和结构类型。引用类型包括类 (Class)类 ...

    C++Primer中文版(第4版).part4

     3.2 标准库string类型  3.3 标准库vector类型  3.4 迭代器简介  3.5 标准库bitset类型  小结  术语  第4章 数组和指针  4.1 数组  4.2 指针的引入  4.3 C风格字符串  4.4 多维数组  小结  ...

    C++ primer 第4版 原书+习题解答+源码 清晰pdf

     3.2 标准库string类型  3.3 标准库vector类型  3.4 迭代器简介  3.5 标准库bitset类型  小结  术语  第4章 数组和指针  4.1 数组  4.2 指针的引入  4.3 C风格字符串  4.4 多维数组  小结 ...

    基于C++开发的射击游戏

    ZeroMemory( &scRect, sizeof( scRect ) ); GetWindowRect( GetActiveWindow(), &scRect ); //防止图片左上角超过窗口左上角 if ( x ) { m_rect.left -= x; x = 0; } if ( y ) { m_rect.top -= y; ...

    现代C++程序设计

    2.4.2 容器=数据类型,标签=变量名 2.4.3 数据类型修饰符 2.4.4 问题分析:整型数据究竟有多大 2.5 C++中的变量声明 2.5.1 C++的命名规则 2.5.2 在哪里声明变量 2.6 C++中的运算符 2.6.1 计算路程的程序 2.6.2 从...

    -C++参考大全(第四版) (2010 年度畅销榜

    7.9 用sizeof来保证可移植性 7.10 typedef 第8章 C风格的控制台I/O 8.1 一个重要的应用说明 8.2 读写字符 8.3 读写字符串 8.4 格式化的控制台I/O 8.5 printf() 8.6 scanf() 第9章 文件I/O 9.1 C与C++的文件I/O 9.2...

Global site tag (gtag.js) - Google Analytics