Tomás Ó hÉilidhe said:
There is /nothing/ that can be achieved more elegantly or more
efficiently in C, than it can be achieved in C++. Nothing. If you
think there's something then I'll listen intently.
The following is valid in C but not in C++:
char data[8] = "abcdefgh";
If you change the array size to 9 bytes, then it is valid in C
and in C++, but wastes 1 byte. Therefore, it is more efficient
to define such an array in C than in C++. One could use an
alternate form of initializer, e.g. {'a', 'b', 'c', 'd', 'e',
'f', 'g', 'h'}, in C++, but that's less elegant than using a
string literal.
[...array versus std::vector...]
Regardless of how ingrained and how prevalent this C++ culture is, it
doesn't have any effect on the language itself.
If you view C++ as a set of potentially useful extensions to C,
then sure in most cases you can write code that is at least as
good, in a variety of ways, as equivalent C code. But that is
not the way that C++ gurus promote C++, and in fact many of the
C++ techniques that such gurus push seem to me much less elegant
than the equivalent C techniques.