Funkcie rbegin a rend
Funkcie begin a end už poznáte. Ak funkcia begin vrácia iterátor ukazujúci na prvú polohu v reťazci a funkcia end na ukončovací znak \0, tak reverzný begin (preto aj názov rbegin) bude ukazovať na posledný prvok v reťazci (nie na ukončovací znak! defakto je ukončovací znak posledný prvok, ale pre zjednodušenie sa tvárime, že posledný prvok je ten, do ktorého môžeme niečo uložiť) a rend bude ukazovať a teraz pozor, na ukončovací znak pred prvým znakom reťazca. Pekný názorný obrázok, ako to vlastne funguje, je na tejto stránke.
1. program: Prvá skúsenosť s funkciami rbegin a rend
#include <iostream> #include <string> using namespace std; int main() { string retazec1 = "Dnes bola zima, brrr!"; for (string::iterator ite = retazec1.begin(); ite != retazec1.end(); ite++) cout << *ite; cout << "\n"; for (string::reverse_iterator iteR = retazec1.rbegin(); iteR != retazec1.rend(); iteR++) cout << *iteR; return 0; }
Výsledok programu:
Dnes bola zima, brrr! !rrrb ,amiz alob senD
2. program: Ďalšie možností funkcie rbegin a rend
#include <iostream> #include <string> using namespace std; int main() { string retazec1 = "Vidim Polarku na oblohe, je tak krasne ligotava!"; for (string::reverse_iterator iteR = retazec1.rbegin()+35; iteR != retazec1.rend()-6; iteR++) cout << *iteR; cout << "\n"; for (string::reverse_iterator iteR = retazec1.rbegin()+1; iteR != retazec1.rend()-39; iteR++) cout << *iteR; cout << "\n"; for (string::reverse_iterator iteR = retazec1.rbegin()+25; iteR != retazec1.rend()-17; iteR++) cout << *iteR; return 0; }
Výsledok programu:
ukraloP avatogil eholbo
Funkcie cbegin a cend
Funkcie cbegin a cend vracajú const_iterator, čo v praxi znamená, že nemôžete modifikovať obsah objektu reťazca. Inak správanie funkcii je rovnaké ako u funkcii begin a end. Ak máte záujem sa dozvedieť viac o rozdieloch begin/cbegin a end/cend, tak navštívte túto stránku.
3. príklad: Testujeme funkcie cbegin a cend
#include <iostream> #include <string> using namespace std; int main() { string retazec1 = "Dnes bola zima, brrr!"; for (string::iterator ite = retazec1.begin(); ite != retazec1.end(); ite++) cout << *ite; cout << "\n"; for (string::reverse_iterator iteR = retazec1.rbegin(); iteR != retazec1.rend(); iteR++) cout << *iteR; cout << "\n"; for (string::const_iterator iteC = retazec1.cbegin(); iteC != retazec1.cend(); iteC++) cout << *iteC; return 0; }
Výsledok programu:
Dnes bola zima, brrr! !rrrb ,amiz alob senD Dnes bola zima, brrr!
Funkcie crbegin a crend
Rovnako ako funkcie begin a end máju i funkcie cbegin a cend svoje reverzné náprotivky.
4. príklad: Testujeme funkcie crbegin a crend
#include <iostream> #include <string> using namespace std; int main() { string retazec1 = "Dnes bola zima, brrr!"; for (string::iterator ite = retazec1.begin(); ite != retazec1.end(); ite++) cout << *ite; cout << "\n"; for (string::reverse_iterator iteR = retazec1.rbegin(); iteR != retazec1.rend(); iteR++) cout << *iteR; cout << "\n"; for (string::const_iterator iteC = retazec1.cbegin(); iteC != retazec1.cend(); iteC++) cout << *iteC; cout << "\n"; for (string::const_reverse_iterator iteCR = retazec1.crbegin(); iteCR != retazec1.crend(); iteCR++) cout << *iteCR; return 0; }
Výsledok programu:
Dnes bola zima, brrr! !rrrb ,amiz alob senD Dnes bola zima, brrr! !rrrb ,amiz alob senD