zweckentfremdung std::vector ????



  • Hallo zusammen,

    ich sehe oft, dass der std::vector auch folgendermaßen genutzt wird,

    //daten rein
    std::vector<uint8_t> myVec (64);  // 64byte
    memcpy(&myVec[0],pMyData,myVec.size());
    
    // ...
    
    //daten raus
    memcpy(pMyData,&myVec[0],unMyDataLen);
    

    Ist das eine Zweckentfremndung des std::vector als einfacher Datenpuffer und man macht sich nur den zusammenhängenden Speicher der einzelnen Elemente zu nutze oder ist das gewollt, dass man den auch so benutzen kann?

    Grüße



  • ist ja sogar eine vector<T>::data() Methode hinzugekommen (war's C++11!?), um noch komfortabler an den Datenblock ranzukommen.
    So gesehen ist es wohl gewollt.



  • Es ist gewollt, dass man einen std::vector auch wie ein normales Array benutzen kann. Ob es jetzt wirklich sinnvoll ist, 64 Byte auf dem Heap zu allozieren, statt ein std::array zu benutzen, steht dann wieder auf einem anderen Blatt.



  • manni66 schrieb:

    Ob es jetzt wirklich sinnvoll ist, 64 Byte auf dem Heap zu allozieren, statt ein std::array zu benutzen, steht dann wieder auf einem anderen Blatt.

    Einverstanden. Sobald es allerdings eine dynamische Grösse ist, ist std::vector<..> geeignet. Vielleicht hat der OP einfach sein Bsp. zur sehr vereinfacht und "numberOfBytes" durch "64" ersetzt.



  • Nur ein vereinfachtes Beispiel.

    Danke für eure Antworten


Log in to reply