- 如果我没有包含任何头文件,那么
size_t
是从哪里来的? - 总是假设
size_t
==std::size_t
合理吗? - 在什么情况下应该使用
std
容器中的size_type
(例如string::size_type
、vector<T>::size_type
等)?
size_t
是从哪里来的?size_t
== std::size_t
合理吗?std
容器中的 size_type
(例如 string::size_type
、vector<T>::size_type
等)?size_t
。它在<stddef.h>
中定义(如果您的头文件版本将定义放在全局命名空间以及std
中,则可能还在<cstddef>
中定义)。size_t == std::size_t
。只要包含适当的C ++头文件(例如<cstddef>
而不是<stddef.h>
),则C库定义的所有类型和函数都包括在std
命名空间中。vector
)中定义的size_type
类型,可以在使用这些类时使用它们。在大多数情况下,您会知道它与size_t
相同,因此最好使用它并节省一些输入。如果您正在编写通用代码,其中不知道类是什么,则最好使用size_type
,以防它与size_t
不兼容。size_t
表示范围的更多项。您可能会使用某种大数类型来表示容器的大小,该类型不能转换为size_t
。在这种情况下,像size_t s = c.size()
这样的代码将无法编译-您需要使用Container::size_type
。std::____::size_type
的含义是正确的,但你能否详细说明它何时可能与 size_t 不兼容,以及 std::size_t 和 ::size_type 代表的区别? - Davidsizeof(Type)
,而不是Type::size()
的返回值。对于容器来说,Type::size()
返回的是逻辑上包含的元素数量,这个数量可以是任何值。元素可以以不需要大型sizeof
对象的方式存储 - 元素整体不需要在内存中存储,例如从磁盘读取或按需生成。std::
容器只是恰好限制了自己的大小为std::size_t
。 - Bolpatsize_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
)中找到。size_t
在 <cstddef>
中定义,位于 std
命名空间中。
#include
任何内容,size_t a;
是否仍然可以作为声明工作?由于这似乎是关于实现的问题,你能告诉我们你正在使用哪个实现吗? - David Thornley