Sdílet prostřednictvím


begin

Načte iterátor na první prvek v zadaném kontejneru.

template<class Container>
    auto begin(Container& cont)
        -> decltype(cont.begin());
template<class Container>
    auto begin(const Container& cont) 
        -> decltype(cont.begin());
template<class Ty, class Size>
    Ty *begin(Ty (&array)[Size]);

Parametry

  • cont
    Kontejner.

  • array
    Pole objektů typu Ty.

Vrácená hodnota

První dvě funkce šablony vrátí cont.begin().První funkce není konstantní, druhá je konstantní.

Třetí funkce šablony vrátí array.

Příklad

Tuto funkci doporučujeme použít na místě člena kontejneru begin(), pokud požadujete obecnější chování.

// cl.exe /EHsc /nologo /W4 /MTd 
#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <vector>

template <typename C> void reverse_sort(C& c) {
    using std::begin;
    using std::end;

    std::sort(begin(c), end(c), std::greater<>());
}

template <typename C> void print(const C& c) {
    for (const auto& e : c) {
        std::cout << e << " ";
    }

    std::cout << "\n";
}

int main() {
    std::vector<int> v = { 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 };

    print(v);
    reverse_sort(v);
    print(v);

    std::cout << "--\n";

    int arr[] = { 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1 };

    print(arr);
    reverse_sort(arr);
    print(arr);
}
Output:
11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
52 40 34 26 20 17 16 13 11 10 8 5 4 2 1
--
23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
160 106 80 70 53 40 35 23 20 16 10 8 5 4 2 1

Funkce reverse_sort podporuje mimo pravidelných polí také kontejnery všech druhů, protože volá nečlenskou verzi begin().Pokud reverse_sort bylo kódováno k použití člena kontejneru begin():

template <typename C> void reverse_sort(C& c) {
    using std::begin;
    using std::end;

    std::sort(c.begin(), c.end(), std::greater<>());
}

Pak zasláním pole způsobíte tuto chybu kompilátoru:

error C2228: left of '.begin' must have class/struct/union

Požadavky

Hlavička: <iterator>

Obor názvů: std

Viz také

Referenční dokumentace

<iterator>

cbegin

cend

end