首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::size_t对size_t对std::string::size_type

std::size_t对size_t对std::string::size_type
EN

Stack Overflow用户
提问于 2011-12-14 16:19:43
回答 3查看 5.3K关注 0票数 21

当我没有任何包含的内容时,std::size_t

  • When从何而来?
  • 总是假定size_t ==
  • 应该在std容器(string::size_typevector<T>::size_type等)中使用size_type吗?H 213F 214/code>>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-14 16:34:30

,当我在一个空项目中没有任何内容时,size_t从何而来?

如果您没有包含任何内容,那么就不能使用size_t。它是在<stddef.h>中定义的(如果您的标头版本将定义放在全局命名空间中以及std中,那么也可以在<cstddef>中定义)。

总是假定size_t == std::size_t是合理的吗?

是。C库定义的所有类型和函数都包含在std名称空间中,只要包含适当的C++头(例如<cstddef>而不是<stddef.h>)

我应该什么时候使用std::_::size_type??

您是指在一些标准类和模板(如size_type )中定义的vector类型吗?如果您愿意,可以在使用这些类时使用这些类。在大多数情况下,您将知道它与size_t是相同的,所以您最好使用它并节省一些输入。如果您正在编写泛型代码,其中您不知道类是什么,那么最好使用size_type,以防它与size_t不兼容。

例如,您可能希望编写一个容器,用于保存比size_t所能表示的项目更多的项。您可以使用某种大数字类型来表示容器的大小,这是不可转换为size_t的。在这种情况下,像size_t s = c.size()这样的代码将无法编译-您需要使用Container::size_type代替。

票数 12
EN

Stack Overflow用户

发布于 2011-12-14 16:21:42

如果在一个空项目中没有包含任何内容,那么size_t从何而来?

size_t是C/C++标准库中定义的基本无符号整数模形类型.它在"stddef.h"中定义为C,在<cstddef>中定义为C++

头文件"stddef.h"定义的类型位于全局命名空间中,而<cstddef>标头将size_t类型放置在名称空间std中。

为了兼容起见,将来自C的"stddef.h"包含到C++中,因此可以在全局命名空间(::size_t)和std命名空间(std::size_t)中找到该类型。

票数 3
EN

Stack Overflow用户

发布于 2011-12-14 16:35:18

size_t<cstddef>中定义,在std命名空间中定义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8507851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档