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








