Nie znalazłem lepszego sposobu sformułowania mojego pytania w ten sposób: Czy dane wyjściowe poniżej zawsze są prawdziwe? czy to jest przenośne?C++: Jak dalece (w bajtach) jest członkiem klasy w tablicy?
struct Point
{
int x;
int y;
};
//...
std::vector<Point> points(3);
unsigned char* start = (unsigned char*)(&points[0]);
unsigned char* end = (unsigned char*)(&points[1]);
std::cout << "is this the same ? " << std::distance(start,end) == sizeof(Point);
Co jeśli zamiast vector
, points
zostały zdefiniowane jako surowiec tablicy? Czy dane wyjściowe są zawsze prawdziwe?
Point *points = new Point[3]; // instead of std::vector<Point> points(3);
Tak. Przynajmniej wektor jest przechowywany w pamięci jako normalna tablica C. –
Tak, gwarantowane jest przechowywanie jako tablica. [edytuj] ah Erik mnie pobił :-) – atlaste
_ "Wszystkie komentarze zawierały coś w stylu ..." Tak, ponieważ o to właśnie prosiłeś. –