přejít na obsah přejít na navigaci

Linux E X P R E S, Programovanie v jazyku C++: funkcie rbegin, cbegin, crbegin a rend, cend, crend

POINT.X

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 . 


reklama

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

Nahoru

(Jako ve škole)
Průměr: 1,00 | Hodnotilo: 1
 

Top články z OpenOffice.cz

Přidat téma diskuse

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky Exospace.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.


  • Distribuce: ubuntu
  • Grafické prostředí: unity
  • Hodnocení autora: *



Public Relations

Hledáme externí spolupracovníky - staňte se zpravodajem LinuxEXPRES.cz

Hledáme nadšence do Linuxu a open source technologií, kteří by měli zájem přispívat na LinuxEXPRES.cz. Příležitostně, nebo i pravidelně, podle svých možností. Hledáme externí spolupracovníky, kteří se zajímají, co je nového kolem Linuxu a chtěli by se o získané informace podělit, přispět komentářem nebo článkem o svých zkušenostech s různými technologiemi a jejich uplatněním.

Pokračování ...


Redakční blog

Redakce

Redakce, 21. prosinec

Pište pro LinuxEXPRES

Baví vás Linux? Pište o něm, není to nic těžkého. LinuxEXPRES hledá nové autory.


Pavel Fric

Pavel Fric, 23. říjen

Nové motivy pro přehrávač Sayonara

Pomozte rozšířit možnost měnit vzhled programu za běhu


Pavel Fric

Pavel Fric, 28. únor

Lollypop


Všechny blogy »