Linux E X P R E S

Facebook

Programovanie v jazyku C++: funkcie rbegin, cbegin, crbegin a rend, cend, crend

C++

V tomto článku si preberieme viacero funkcii, ale nebojte sa, ide len o deriváty funkcie begin a end s podobnou funkcionalitou. Ide konkrétne o funkcie rbegin a rend , cbegin a cend , crbegin a crend . 


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

Diskuze (0) Nahoru