• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

std::vector i wskaźniki

0 głosów
1,496 wizyt
pytanie zadane 2 maja 2017 w C i C++ przez Pajdas Mądrala (5,930 p.)

mam taki kod

vector<Object>*ob;
vector<Object>obiekty;
obiekty.push_back(Object(10,10,10,10));
ob = &obiekty;

teraz chcę dostać się do elementu std::vector<Object>obiekty za pomocą ob

ob[0]. nie działa, tak samo jak ob[0]-> i *ob[0].

może mi ktoś wyjaśnić i pomóc

3 odpowiedzi

+4 głosów
odpowiedź 2 maja 2017 przez draghan VIP (106,230 p.)
wybrane 2 maja 2017 przez Pajdas
 
Najlepsza

Zmienna ob jest wskaźnikiem. Musisz najpierw dokonać dereferencji, żeby móc robić cokolwiek z oryginałem.

(*ob)[0] = // ...
// lub:
ob->operator[](0) = // ...

...ale przyznaj, że wygląda to paskudnie.

Dlaczego nie użyjesz referencji?

auto& ref_ob = obiekty;
ref_ob[0] = // ...

 

+2 głosów
odpowiedź 2 maja 2017 przez Knayder Nałogowiec (37,640 p.)
std::vector<int> container;
std::vector<int> *pointer;
container.push_back(103);
pointer = &container;
std::cout << (*pointer)[0] << std::endl;

To działa normalnie? Zapewne twoim błędem jest niestosowanie nawiasów w: (*pointer)

 

Ale i tak lepiej korzystać z iteratorów w wektorach.
http://www.cplusplus.com/reference/vector/vector/begin/

+1 głos
odpowiedź 2 maja 2017 przez tangarr Mędrzec (155,140 p.)
(*ob)[0]

Podobne pytania

0 głosów
1 odpowiedź 516 wizyt
–3 głosów
1 odpowiedź 1,074 wizyt
pytanie zadane 1 czerwca 2020 w C i C++ przez WiktroH Mądrala (6,550 p.)
0 głosów
1 odpowiedź 395 wizyt

93,605 zapytań

142,530 odpowiedzi

322,999 komentarzy

63,095 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...