Klasa vector PDF Drukuj Email
Wpisał doctor   
Sobota, 10. Maj 2008 15:09
Klasa vector
W programach często wykorzystujemy tablice do przechowywania zmiennych.Po tablicach łatwo się poruszać, gdyż musimy znać jedynie nazwę tablicy (początek) oraz indeks komórki.W sytuacji, gdy musimy użyć w programie tablicy o niezannym rozmiarze, mamy standardowo dwa wyjścia:
  1. użycie tablicy statycznej, np. int tab[1000]; o rozmiarze za dużym niż przewidujemy wykorzystywać w programie.To rozwiązanie ma poważną wadę, mianowicie nawet jeśłi tablica nie będzie używana to zawsze zajmuje tyle miejsca w pamięci ile wynosi jej pojemność.
  2. użycie operatora new - tablica dynamiczna.Rozwiązanie zalecana w C++, program sam sobie alokuje pamięć.Pamiętać należy koniecznie o zwolnieniu zasobów operatorem delete.
Czy to wszystkie możliwości?
Oczywiście nie! Właśnie dlatego wymyślono klasę vector, która reprezentuje tablicę standardową.
Korzystając z klasy vector nie musimy znać rozmiaru tablicy w momencie jej deklaracji.Vector umożliwia nie tylko pracę z typami wbudowanymi, ale także stworzonymi przez programistę.

Aby korzystać z klasy vector, należy dodać nagłówek
#include <vector.h>
(lub też #include <vector>)

Klasa vector znajduje się w przestrzeni nazw biblioteki standardowej, a więc w programie możemy zadeklarować
using namesoace std;
lub też 
using std::vector; (zalecane).

Obiekt klasy vector może mieć kilka konstruktorów, poniżej kilka przykładów.
vector <String> doctor;
vector <String> doctor(50);
vector <String> doctor(50, "www.doctor.programuj.com");
W pierwszym przypadku stworzyliśmy vector doctor, o elementach typu String i o niezdefiniowanym rozmiarze.
Drugi przypadek do stworzenie vectora doctor, 50 elementowego, typu String.
Trzeci przykład to stworzenie już zainicjowanego vectora, wartość każdego elementu wynosi www.doctor.programuj.com.

Do vectora odwołujemy się jak do wzykłej tablicy, a więc za pomocą indeksu.
Mając vector
vector <String> doctor(50, "www.doctor.programuj.com");
wypiszemy np. 7 element vectora
Label1->Caption = doctor[7];
czy też w konsoli
cout << doctor[7];
Elementy vectora możne wypisywać także korzystając z funkcji at, która sprawdza czy dany element vectora istnieje.
Jeśli tak, zostanie on wypisany.Jeśli nie, zostanie wyrzucony wyjątek out_of_range.
Label1->Caption = doctor.at(7);

Odczyt elementów vectora
vector <String> doctor(50, "www.doctor.programuj.com");
int i=0;
while(i<50)
{
Memo1->Lines->Add(doctor.at(i));
i++;
}

Zapis elementów vectora
vector <String> doctor(50);
int i=0;
while(i<50)
{
doctor.at(i) = IntToStr(i);
Memo1->Lines->Add(doctor.at(i));
i++;
}
Zapis poszczególnego elementu vectora można przeprowadzać tak jak w tablicach, a więc
doctor[i] = IntToStr(i);
jednak aby mieć większą kontrolę nad programem, zaleca się korzysatnie z funkcji at.
Komentarze
Dodaj nowy Szukaj
Napisz komentarz
Nick:
E-mail:
 
Strona www:
Tytuł:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Proszę wpisać kod antyspamowy widoczny na obrazku.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

LAST_UPDATED2
 
 

Losowy obraz

b5.jpg

Gościmy

Naszą witrynę przegląda teraz 29 gości 




Łazienki | projektowanie wnętrz warszawa | Windows | nero | avast