Wektor jest tożsamy w C++ z tablicą, jedynie mechanizmy języka umożliwiają jego kontrolowane powiększanie. Jest to ciąg zajętych komórek pamięci adresowanych sekwencyjnie. Ich adresy odległe są między sobą o wielkość danych (czyli w uproszczeniu rodzaju danych) trzymanych wewnątrz. Jeśli dane zawarte są w 2 bajtach, to element o indeksie 0 jest o 2 mniejszy niż o indeksie 1.
Macierz możesz w C++ przedstawić na 2 sposoby:
1. Ciągła przestrzeń pamięci z metodami dostępowymi umożliwiającymi określenie gdzie jest dany element. Czyli np. jeśli mamy macierz 3 x 3, to wiesz o indeksie 1 (czyli drugi bo liczymy w C/C++ od 0), będzie w 3 indeksie (czyli 4'tym miejscu pamięci bo liczymy od zera).
2. W postaci dynamicznej tablicy zawierającej wskaźniki na wiersze umieszczone w innym miejscu pamięci.
Każdy ze sposobów ma swoje wady i zalety. IMHO ze względu na wydajność, sposób drugi (bez specjalnej dbałości o sposób rozlokowania danych) ma więcej wad. Za to sposób 1 wymaga implementacji prostej arytmetyki przy dostępie do danych (tak zapis jak i odczyt).