ďťż

Ładny brzuch

Witam, mój temat dotyczy kontenera vector ze Standardowej Biblioteki Typów(STL).

1. Mam wskaźnik do wektora znaków
#include <vector> using namespace std ... vector<char> * ptr = new vector<char>; ... ptr->push_back('a');
Jak widać, elementy do wektora dodaję za pomocą metody push_back(). Chodzi mi o banalną rzecz - odwołanie do poszczególnych elementów wektora. Działa:
ptr->operator[](i)ale chodzi mi o coś prostszego, jak:
*(ptr[i]) // nie działa No właśnie, gdzie tu błąd?

2. Jeśli zaalokowałem na stercie zwykłą tablicę
char * ptr = new char[100] i chcę ją usunąć, to nie napiszę
delete ptr bo to spowoduje wyciek pamięci. Trzeba napisać
delete[] ptr. Ale jak to jest z wektorami?
#include <vector> using namespace std; ... vector<char> * ptr = new vector<char> ... delete ptr;Czy tu nie ma wycieku?



bo zapamiętaj, że vector nie był projektowany jako obiekt dostępny przez wskaźnik, ( tak jak to bywa z obiektami z BCB ). By się odwołać do operatora [] niejawnie musisz dotrzeć do samego obiektu:
(*ptr)[index];
By zwolnić pamięć z vector'a należy wywołać metode clear() lub dla pojedyńczego obiektu erase() ( no chyba, że za tablice mamy wskaźniki do obiektów -> wtedy nastąpi wymazanie wskaźnika, a nie obiektu, czyli trzeba obiekt skasować ręcznie ).

I nie -> nie ma wycieku, bo vector w destruktorze ma wywołanie metody clear();


Witam, mój temat dotyczy kontenera vector ze Standardowej Biblioteki Typów(STL).

Gwoli ścisłości: STL- Standard Template Library - Standardowa biblioteka szablonów.

eh ale obciach :rolleyes:


Gwoli ścisłości: STL- Standard Template Library - Standardowa biblioteka szablonów.
eh ale obciach  :rolleyes:



Rzeczywiście, ale głomb zemnie :)


Gwoli ścislości: klasa vector (...)


Gwoli scislosci... ale wy jesteście drobiazgowi.

Gwoli ścisłości nie ma nic złego w powiedzeniu kontenera z biblioteki standardowej STl ponieważ do niej właśnie należy...A topik-CLOSE

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •