当我没有任何包含的内容时,std::size_t
size_t == std容器(string::size_type,vector<T>::size_type等)中使用size_type吗?H 213F 214/code>>发布于 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代替。
发布于 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)中找到该类型。
发布于 2011-12-14 16:35:18
size_t在<cstddef>中定义,在std命名空间中定义。
https://stackoverflow.com/questions/8507851
复制相似问题