【问题标题】:vector<int>::size_type in C++C++ 中的向量<int>::size_type
【发布时间】:2011-06-18 11:45:31
【问题描述】:

这个 C++ 语句是什么意思?

vector<int>::size_type x;

而且,这里的作用域运算符:: 有什么用?换句话说,我们如何阅读这个英文陈述?

例如,对于X::x(){...},我们说x()member functionclass X

【问题讨论】:

    标签: c++ vector size-type


    【解决方案1】:

    size_typevector&lt;int&gt; 类型的(静态)成员类型。通常,typedef 对应于std::size_t,它本身通常是typedef 对应于unsigned intunsigned long long

    【讨论】:

    • 这个“通常”有哪些例外?即,什么时候不寻常?
    • “通常”意味着标准没有指定它,但这就是流行的实现选择做的事情。实际上,我知道一个“例外”。 Linux glibc 在 x86_64 平台上将unsigned long 用于size_t
    【解决方案2】:

    我会将其解读为“将 x 声明为适合保持向量大小的类型的变量”。向量为其长度定义了自己的类型,如果可能的话,使用它总是最干净的,而不是“猜测”并直接使用intunsigned intlongunsigned longsize_t 等否则需要这样做。

    【讨论】:

    • 这部分有必要包含vector&lt;int&gt;吗?我们如何将x 定义为向量为自己定义的size_type?谢谢
    • @user588855:是的,必须使用全名。 vector 可能是一个专门的模板,它的 size_type 不同于例如矢量<:string>::size_type.
    • vector&lt;std::string&gt;::size_type的情况下,大小不是int吗?当您说 size_type 在这种情况下可能会有所不同时,您的意思是什么?谢谢
    • 当你说declare x as a variable of a type suitable for holding the size of a vector时,我们可以说of a type suitable for holding the size of the largest object in the C++ application吗?谢谢
    【解决方案3】:

    向量是一个模板

    因此,以int 为模板的vector 类型有一个名为size_type 的成员typedefx 被定义为该类型的变量。

    【讨论】:

      【解决方案4】:

      不同的实现使用不同的类型来表示大小,所以 我们不能直接编写适当的类型并保持 独立于实现。出于这个原因,这是一个很好的编程 练习使用库定义的 size_type 来表示 容器大小。

      - Andrew Koenig 和 Barbara E. Moo 的加速 C++

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-18
        • 2010-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-17
        相关资源
        最近更新 更多