美文网首页
size_t和size_type

size_t和size_type

作者: 阿布554_ | 来源:发表于2017-07-06 09:17 被阅读47次

    照个人理解,本质上没有太大区别

    • size_t是为了平台移植,比方说一个string太长的时候,用unsigned int来修饰它的长度显然不合适了,sizeof作用是返回对象或者类型的大小,返回类型为size_t,可以理解为 足以保证存储内存中对象的大小,所以bitset.size()的返回类型也是size_t
    • size_type是容器定义的一个类型。例如vector.size()返回类型是size_type,代表容器长度。

    下面是StackOverflow的一些回答

    Question:Is there is a difference between size_t and container::size_type?

    What I understand is size_t is more generic and can be used for any size_types.

    But is container::size_type optimized for specific kinds of containers?

    Answer:The standard containers define size_type as a typedef to Allocator::size_type (Allocator is a template parameter), which for std::allocator is typically defined to be size_t (or a compatible type). So for the standard case, they are the same.

    However, if you use a custom allocator a different underlying type could be used. So container::size_type is preferable for maximum portability.

    Answer2:

    • size_t is defined as the type used for the size of an object and is platform dependent.
    • container::size_type is the type that is used for the number of elements in the container and is container dependent.

    All std containers use size_t as the size_type, but each independent library vendor chooses a type that it finds appropriate for its container.
    If you look at qt, you'll find that the size_type
    of Qt containers is version dependent. In Qt3 it was unsigned int
    and in Qt4 it was changed to int

    相关文章

      网友评论

          本文标题:size_t和size_type

          本文链接:https://www.haomeiwen.com/subject/minchxtx.html