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

EDU Trainings IT školení

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

Nahoru

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



 
 

Top články z OpenOffice.cz

Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 25 rokov. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.


  • Distribuce: ubuntu
  • Grafické prostředí: unity



Public Relations

Domény a nepřeberné množství internetových adres s možností jejich zneužití

dnnsecNepropásněte sérii webinářů zaměřených na aktuální bezpečnostní trendy a jednotnou správu zabezpečení vaše IT – každé pondělí a zdarma.
S doménami přijde do kontaktu naprosto každý uživatel internetu, ačkoliv si to asi neuvědomuje. Už jenom samotné hledání na internetu je spojené s doménami, o nakupování v internetových obchodech ani nemluvě. Věděli jste však, že domény mohou být poměrně jednoduše napadeny?

Pokračování ...


SOPHOS - hacking webinar 2

Public Relations

Vyplatí se investice do SEO agentury?

QNAPObjevili jste zajímavý sortiment zboží, po kterém je na trhu poptávka. Čekala vás dlouhá práce, ale byli jste úspěšní a spustili e-shop. Veškeré zboží má perfektně zpracované fotografie a dokonalý popis. Vše je přehledné, jednoduché na ovládání a s poutavou grafikou. Proč u vás nikdo nenakupuje? Proč navštěvují konkurenční stránky, kde mají vyšší cenu, a dokonce řadu chyb v textu? Nejspíš proto, že vás zákazníci nemají kde najít. Nejste na svém trhu přítomni.

Pokračování ...


Redakční blog

Pavel Fric

Pavel Fric, 21. srpen

Sayonara Player 1.5.1

Přehrávač, jak má být. Poslední dobou vývoj šlape


Pavel Fric

Pavel Fric, 26. leden

MuseScore 3

První aktualizace třetí řady notačního editoru MuseScore


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.


Všechny blogy »

SOPHOS - hacking webinar 2