Zawartość wektora

0

Wydaje mi się, że kontener "vector" zawiera tablicę taką jak char* lub int* wewnątrz obiektu. W jaki sposób można wyciągnąć wskaźnik na zawartość wektora?

vector<int> JakisWektor;
int WielkoscTablicy = JakisWektor.size();
int * Tablica = JakisWektor.WskaznikNaZawartosc;

Co muszę wpisać jako "WskaznikNaZawartosc", żeby kod był poprawny? Oczywiście próba zmiany wielkości zawartości lub rozmiaru może spowodować wadliwe dzianie programu.

0

@Lord Darkstorm pytajacy chce cos innego. On chce wskaznik na obiekt a nie iterowac po wektorze

znajdz obiekt i uzyj po prostu &

http://ideone.com/p4llum

1

nie wyciągamy wskaźników do wartości z vector<T> bo jest to niebezpieczne ze względu na inwalidację składowych vectora podczas operacji, które zmieniają jego rozmiar; bezpiecznym kontenerem jest std::deque, ale też, jedynie gdy pracujesz na 1 lub ostatnim elemencie; ogólnie polecam std::vector<std::unique_ptr<T>> lub std::vector<std::shared_ptr<T>>;

4

vector<T>::data
http://en.cppreference.com/w/cpp/container/vector/data

vector<int> JakisWektor;
int* data1 = JakisWektor.data(); // C++11, zawsze zwróci albo dobry wskaźnik, albo taki, że [data(), data()+size()] to poprawna ranga
int* data2 = &JakisWektor[0]; // UB jeśli size() == 0
int* data3 = &JakisWektor.at(0); // rzuci wyjątek jeśli size() == 0

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