What is meant by 开发者_StackOverflow中文版this C++ statement?
vector<int>::size_type x;
And, what is the use of the scope operator ::
here? In other words, how do we read this statement in English?
For example, for X::x(){...}
, we say that x()
is a member function
of class X
.
size_type
is a (static) member type of the type vector<int>
. Usually, it is a typedef
for std::size_t
, which itself is usually a typedef
for unsigned int
or unsigned long long
.
I would read it as "declare x as a variable of a type suitable for holding the size of a vector". The vector defines its own type for its length, and it's always cleanest to use that if possible, rather than "guessing" and using int
, unsigned int
, long
, unsigned long
or size_t
etc directly as you'd otherwise need to do.
vector is a template
so the vector
type templated with int
has a member typedef
called size_type
. x
is defined as a variable of that type.
Different implementations use different types to represent sizes, so we cannot write the appropriate type directly and remain implementation-independent. For that reason, it is good programming practice to use the size_type that the library defines to represent container sizes.
- Accelerated C++ by Andrew Koenig and Barbara E. Moo
精彩评论