/ / Jak mam poprawnie uzyskać dostęp do elementów wektora? - c ++

Jak poprawnie uzyskać dostęp do elementów wektora? - c ++

int main() {

vector <int> multiples(1);

cout << multiples[0];

}

Zwraca 0, gdy chcę, aby to było 1. Dzieje się tak, gdy inicjuję wektor jednym elementem, mogę uzyskać dostęp do drugiego elementu, jednak:

int main() {

vector <int> multiples(1, 4);

cout << multiples[1]; // 4

}

Ponadto, gdy próbuję uzyskać dostęp do elementów wwektor, który nie istnieje, otrzymuję wartość najbardziej na prawo elementu (w tym przypadku 4). Ale nie wydaje mi się, żeby dostałem pierwszy element. Czy ktoś może wyjaśnić, dlaczego?

Odpowiedzi:

4 dla odpowiedzi № 1

To

vector <int> multiples(1);

tworzy wektor int o rozmiarze 1. Pojedynczym elementem jest wartość zainicjowana, które dla ìnt oznacza zero zainicjowanych. Otrzymujesz wektor z jednym wpisem o wartości 0. I ten

vector <int> multiples(1, 4);

tworzy wektor o rozmiarze 1, tym razem z wartością4. Jeśli próbujesz uzyskać dostęp multiplies[1] wychodzisz poza granice wektora wielkości 1, wywołując w ten sposób niezdefiniowane zachowanie. Chcesz zainicjować wektor dwoma elementami wartości 1 i 4, w C ++ 11 możesz to zrobić:

vector <int> multiples{1, 4};

1 dla odpowiedzi nr 2
int main() {

vector <int> multiples(1);

cout << multiples[0];

}

http://cplusplus.com/reference/stl/vector/vector/

tworzy wektor z 1 elementem int, domyślnie inicjalizowanym (tj. int () == 0).

vector <int> multiples(1, 4);

tworzy wektor z 1 elementem int zainicjowanym przez 4.

cout << multiples[1]; // 4

jest to nieprawidłowe, ponieważ w wektorze jest tylko jeden element.


1 dla odpowiedzi nr 3

Spójrz na ten kod. Powinieneś zobaczyć problem. Nie inicjujesz wektora w oczekiwany sposób.

int main()
{
vector <int> multiples(2); // create a vector of size two with default value of 0.
multiples[0] = 10; // set element at index 0 = 10
multiples[1] = 20; // set element at index 0 = 10
cout << multiples[0]; // 10
cout << multiples[1]; // 20
}

0 dla odpowiedzi nr 4

W rzeczywistości nie musisz określać rozmiaruwektor. Możesz dodawać elementy (obiekty, które mają być określone) w razie potrzeby, co jest główną zaletą i wykorzystaniem wektorów. Dodanie elementu do wektora można łatwo wykonać:

multiples.push_back(1);
multiples.push_back(4);

Mam nadzieję, że to pomoże.