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

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

Vysvětleme si internet

TELE3Možná jste až do této chvíle vůbec netušili, že existuje něco jako DNS servery. A to navzdory tomu, že se s těmito při používání internetu dnes a denně setkáváte a nemůže tomu být ani jinak. Protože nebýt těchto, nebyl by internet internetem.

Pokračování ...



Public Relations

SOS Security Week - interaktivní webináře

SophosOblíbený Security SOS Week je zpátky! … na přelomu června a července proběhne další ze série Security SOS Week, která vám pomůže zjistit, jak efektivně ochráníte vaši IT infrastrukturu před hackery a že malware je zpět v plné síle a i bezpečnost vašeho soukromí má dvě strany jako mince.

Pokračování ...


Redakční blog

Pavel Fric

Pavel Fric, 21. August

Sayonara Player 1.5.1

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


Pavel Fric

Pavel Fric, 26. January

MuseScore 3

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


Redakce

Redakce, 21. December

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 »

SOLIDWORKS