Wie kann ich erreichen, sizeof Vektor::value_type?

Ich will sizeof des Typs, das ist enthalten in einem Vektor. Hier ist, was ich versucht habe:

#include <iostream>
#include <vector>

int main()
{
    std::vector<uint> vecs;
    std::cout << sizeof(vecs.value_type) << std::endl;
    return 0;
}

Aus meinem Verständnis sollte dies richtig sein. Jedoch beim kompilieren mit GCC 4.8.1 dies ist, was ich bekomme:

test-sizeof.cpp: In function 'int main()': 
test-sizeof.cpp:7:27: Fehler: ungültige Verwendung von 'std::vector<unsigned int>::value_type' 
std::cout << sizeof(vecs.value_type) << std::endl; 
^

Was mache ich falsch? Wie kann ich die Größe der enthaltenen Typ?

  • Verwenden std::vector<uint>::value_type
  • sizeof(std::vector<uint>::value_type) oder sizeof(decltype(vecs)::value_type).
  • Danke, das decltype trick ist, was ich benutzt habe. Wenn Sie die Zeit finden können Sie bitte eine detaillierte Erklärung, was ist hier Los? Ich denke, ich habe eine vage Idee, aber nicht genug, dass ich vielleicht erklären es im detail.
  • Warum nicht einfach sizeof(vecs[0])?
  • Würde das funktionieren, auch wenn der Vektor keine Elemente?
  • Ja, weil der operand wird nicht ausgewertet. (Ja ich bin zu spät. :|)

InformationsquelleAutor Chris | 2014-01-22
Schreibe einen Kommentar