wypełnianie vectora bez użycia tablicy

0

Witam , wiem że można tak wypełnić wektor danymi z tablicy , ale tego nie rozumiem(nie chce pętlą)

char znaki[4] = { 'a' , 'b' , 'c' , 'd'};
//tworzenie wektora na podstawie tablicy
vector<char> vec(znaki, znaki+sizeof(znaki)/sizeof(char));

za co są odpowiedzialne parametry 'znaki' oraz 'znaki+sizeof(znaki)/sizeof(char)'
Mógłby to ktoś jasno opisać ?
pozdrawiam.

0

znaki jest niejawnie rzutowane na wskaźnik na pierwszy element tablicy.
sizeof(znaki)/sizeof(char) to jest określenie rozmiaru statycznie zaalokowanej tablicy.
znaki+sizeof(znaki)/sizeof(char) to jest przesunięcie wskaźnika o rozmiar tablicy co w efekcie daje adres pierwszej komórki pamięci za tablicą.

0

sizeof(znaki)/sizeof(char) to jest określenie rozmiaru statycznie zaalokowanej tablicy.
czyli 4. można to zapisać bardziej czytelnie jako

const int ROZMIAR = 4;
char znaki[ROZMIAR] = { 'a' , 'b' , 'c' , 'd'};  
vector<char> vec(znaki, znaki+ROZMIAR);

1 użytkowników online, w tym zalogowanych: 0, gości: 1