Ist es nun garantiert, dass &vec[0] das untergeordnete Array eines Vektors zurückgibt?
-
Denn ich habe (in diesem Forum) schon gegenläufige Behauptungen gesehen.
-
Es gibt auch ein geordnetes Array zurück.

-
ja, das ist garantiert... steht sogar im std
-
muffmolch schrieb:
steht sogar im std
Wo genau?
-
hab grad nach dem forenbeitrag gesucht... dort habe ich damals mit diskutier, weil ich zum versenden der vektoren via mpi diese garantie benötige.. ich such rasch weiter...
-
whiskeyInTheJar schrieb:
muffmolch schrieb:
steht sogar im std
Wo genau?
here we go:
aus:http://www.c-plusplus.net/forum/viewtopic-var-t-is-190996-and-postdays-is-0-and-postorder-is-asc-and-start-is-10.htmlMeint ihr das aus 23.2.4 1
Zitat von Braunstein... Storage management is handled automatically, though hints can be given to improve efficiency. The elements of a vector are stored contiguously, meaning that if v is a vector<T, Allocator> where T is some type other than bool, then it obeys the identity &v[n] == &v[0] + n for all 0 <= n < v.size().
-
gilt das auch für deque?
-
JustAnotherNoob schrieb:
gilt das auch für deque?
Nein. Deque besteht intern nicht aus einem einzelnen Array sondern aus einem oder mehreren "chunks" gleicher Größe.
Siehe auch hier: http://www.gotw.ca/gotw/054.htm
-
pumuckl schrieb:
JustAnotherNoob schrieb:
gilt das auch für deque?
Nein. Deque besteht intern nicht aus einem einzelnen Array sondern aus einem oder mehreren "chunks" gleicher Größe.
Siehe auch hier: http://www.gotw.ca/gotw/054.htm[pingelig]
std::deque kann, muss aber nicht aus mehreren Chunks gleicher Grösse bestehen.
[/pingelig]
-
hustbaer schrieb:
[pingelig]
std::deque kann, muss aber nicht aus mehreren Chunks gleicher Grösse bestehen.
[/pingelig]Na gut - die Größe muss nicht die selbe sein
um die Chunks kommt man aber afaik nicht herum wegen den Eigenschaften in §23.2.1.3
-
@pumuckl:
Hab den Standard grad nicht zur Hand - ist da irgendwas drin was eine Implementierung als "vector mit wrap-around" (quasi ein auto-grow ring-buffer) verhindern würde?Bei den Iteratoren (Gültikgeit nach gewissen Operationen) sehe ich kein Problem, push_back/push_front in amortisiert O(1) ist auch kein Problem...
Die "chunk" Implementierung von std::deque ist ja vom Prinzip her auch ein Ring-Puffer, bloss halt ein Ring-Puffer der Zeiger auf Chunks speichert anstatt die Elemente selbst zu speichern.
-
hustbaer schrieb:
...
Ringpuffer haben aber eigentlich eine fixe Größe und wachsen nicht.