Re: Newbie Question: 'Sizeof' - I'm unclear what it actually measures, Modern equiv of older style reference manual?
Christian Hackl <hacki@sbox.tugraz.at> wrote:
In C++, the correct way to create an array of 5 ints and print its size
is as follows:
[...]
std::vector<int> scores;
Says who?
If I say that the "correct" way of create such an array is by using
std::deque, are you going to say that I'm wrong?
Using std::vector is only one possible way of doing that. On what grounds
do you base your claim that it's "the correct way"?
Besides, suggesting using std::vector in all possible cases is
irresponsible. If you want an array of exactly 5 ints, and it will be
an array of 5 ints for the entire duration of the program, then
std::vector is one of the least efficient ways of doing that. This is
especially true if it will be instantiated many times, for example as
the member of a class (which is instantiated and copied around a lot).
If I needed an array of exactly 5 ints in a class, I would very definitely
write it as:
class TheClass
{
int theArray[5]; // The *correct* way
...
};
and very definitely not as:
class TheClass
{
std::vector<int> theArray; // The *incorrect* way
...
};
As said, if an array of exactly 5 ints is needed, using std::vector for
that is an extremely inefficient solution.
Note that what some other languages usually call "array" is called
"std::vector" in C++.
Again, says who?
If I used std::deque instead, would you claim I'm wrong? On what do you
base your claim on?
IOW, it's the language's default container.
Default container? Where does it say that?
A vector knows its own size and does not require you to cast anything.
Neither does std::deque. Why are you shunning it?
The thing you have used are "real", or low-level, arrays. You usually do
not need them in C++, especially when you are a beginner. They will get
you into a lot of trouble and gain you nothing.
If the array has a fixed size and is small, using an array rather than
std::vector is definitely more efficient (regardless of the context).
How is that "gain you nothing"?