korzystając z dereferencji iteratora wyświetlamy kolejne łańcuchy...
Serwis znalezionych hasełOdnośniki
- Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
- Po drugie: gdyby nawet państwa zachodniej Europy naprawdę robiły to samo, co kolejne rządy Polski (a nie robią, o czym za chwilę), to są to państwa bogate i jeśli...
- Picker) Lista obsługująca Implementuje listę, umożliwiającą zmianę kolejności brak przeciąganie elementów przez przeciąganie...
- Ale od tego moe zalee los miliardw ludzi na Ziemi i kolejnych miliardw w caej Galaktyce...
- ZWRACAJ UWAGĘ NA SWOJE MEMORANDAInformacje wewnętrzne firmy (memoranda) to kolejna pułapka...
- prostszego i bardziej przekonującego sposobu oświadczenia, Ŝe ja uwaŜam cię za Ŝe - kolejny raz - poczuł, jak z jego serca znikają resztki chłodu...
- Kolejności zwiedzania miasta oczywiście nie pamiętam i nie ma ona wielkiego znaczenia, w każdym razie wieczorem, wykończona doszczętnie, jechałam do hotelu...
- Spróbowałem tresury powtórnie, kiedy złowiłem kolejnego żółwia...
- Kolejna seria narzutów miała być ostatnią w meczu...
- uświadomiła sobie, że biała postać to kolejny strażnik...
- koontz dean r-moonlight bay t 2, korzystaj z nocy — Czy to były oświadczyny? — Tak! — odkrzyknąłem...
Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
W kolejnym
fragmencie programu modyfikujemy sekwencję naszych łańcuchów oraz
zlecamy ich wyświetlenie:
s1.insert(find(s1.begin(),s1.end()," jest"), "takze");
copy (s1.begin(),s1.end(),output);
Najpierw przy pomocy metody find() w wektorze s1 szukamy napisu “jest”.
Funkcja find() zwraca pozycję pierwszego elementu o wartości przekazanej w
argumencie (u nas jest to napis ” jest”). Po ustaleniu pozycji, metoda insert()
przed znalezionym elementem ” jest” wstawia element, którego wartość jest
przekazywana przez drugi jej argument, w naszym przypadku jest to napis
” takze”.
Metoda
copy()
korzystając
z
iteratora
wyjściowego
ostream_iterator<string> powoduje wyświetlenie wszystkich elementów
nowej sekwencji wektora s1.
Kontener map pozwala na elegancką obsługę par danych, z których jeden
element może być łańcuchem. Kolejny przykład wykorzystuje mapę, jako
tablicę asocjacyjną. Tworzymy pary – nazwa pojazdu i jego średnia prędkość. W
takiej parze kluczem jest nazwa pojazdu a wartością jest szybkość. W programie
tworzymy kolekcję pojazdów i ich szybkości podanych w kilometrach na
godzinę, a następnie podajemy szybkość w milach na godzinę.
Wydruk 7.9. obiekt string i kontener map
#include <iostream>
#include <map>
#include <string>
#include <iterator> //ostream_iterator
#include <conio.h>
using namespace std;
int main()
{ typedef map<string, float> sfmap;
sfmap :: iterator p;
sfmap pojazd;
pojazd["rower"] = 50.0;
pojazd["auto"] = 120.0;
pojazd["pociag"] = 160.0;
pojazd["samolot"] = 950.0;
cout <<"szybkosc w km/godz : " << endl;
for (p = pojazd.begin(); p != pojazd.end(); ++p)
cout << p-> first << "\t" << p-> second << endl ;
for (p = pojazd.begin(); p != pojazd.end(); ++p)
p-> second /= 1.609; ;
cout <<"\nszybkosc w milach/godz : " << endl;
Wprowadzenie do STL
207
for (p = pojazd.begin(); p != pojazd.end(); ++p)
cout << p-> first << "\t" << p-> second << endl ;
getche();
return 0;
}
Wynikiem wykonania programu jest komunikat:
szybkosc w km/godz :
auto
120
pociag
160
rower
50
samolot
950
szybkosc w milach/godz :
auto
74.5805
pociag
99.4406
rower
31.0752
samolot
590.429
W programie utworzono mapę o nazwie pojazd, klucze są typu string, wartości
są typu float, utworzono także iterator p:
typedef map<string, float> sfmap;
sfmap :: iterator p;
sfmap pojazd;
Przy pomocy instrukcji:
pojazd ["rower"] = 50.0;
wstawiamy elementy do kontenera, a następnie przy pomocy pętli for
wyświetlamy zawartość kontenera pojazd . Przypominamy, że dostęp do
elementów mapy odbywa się za pośrednictwem iteratorów.
Jeżeli zdefiniujemy iterator:
map<string, float> :: iterator p;
to dzięki iteratorowi możemy przeglądać elementy mapy.
Wyrażenie
p -> first
zwraca klucz bieżącego elementu.
208
7. Łańcuchy i klasa string
Z kolei wyrażenie:
p-> second
zwraca jego wartość.
Jeżeli chcemy modyfikować wartość to możemy skorzystać na przykład z
prostego podstawienia:
p -> second = 1313.13;
Wypisywanie wszystkich elementów mapy realizuje się przy pomocy instrukcji:
for (p = pojazd.begin(); p != pojazd.end(); ++p)
cout << p-> first << "\t" << p-> second << endl ;
W kolejnej pętli realizowane jest zamiana wartości, szybkość w km/godz.
wyliczana jest w jednostkach mila/godz.:
for (p = pojazd.begin(); p != pojazd.end(); ++p)
p-> second /= 1.609; ;
Pamiętamy, że 1 mila to 1.609 km.
Kontener wektor umożliwia przechowywanie obiektów klasy, zdefiniowanej
przez użytkownika (wydruk 7.10). Jest to bardzo silne narzędzie. Tego typu