in std::vector<int> vec[3];
inhärenten Es gibt nichts, wo der erste zu sagen, oder die zweite Indizierung stellt "Zeilen" vs. "Spalten" dar - es ist alles eine Frage Ihrer eigenen Perspektive als Programmierer. Das heißt, wenn man bedenkt, das 3 Reihen haben, können Sie diese Nummer abrufen können ...
std::extent<decltype(vec)>::value
... für die Sie #include <type_traits>
benötigen. Siehe here.
Wie auch immer, ist std::array<>
speziell entwickelt, um eine bessere, einheitliche Schnittstelle zur Verfügung zu stellen - und wird bereits vertraut sein, von std::vector
:
std::array<std::vector<int>, 3> vec;
...use vec.size()...
(Konsistenz ist besonders wichtig, wenn Sie Templat-Code wollen beide Vektoren und Matrizen zu handhaben .)
Sie möchten 'std :: distance (std :: begin (vec), std :: end (vec))'. In C++ 17 wollen Sie 'std :: size (vec)'. –
Sie können 'sizeof (vec)/sizeof (std :: vector)' verwenden. –
Ich denke er meint, er will 'vec [0] .size() + vec [1] .size() + vec [2] .size()'. Falls dies wirklich erforderlich ist, achten Sie darauf, dass die obige Berechnung einen Unterschied zu 'vec [0] .capacity() + vec [1] .capacity() + vec [2] .capacity()' – GeorgeAl