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