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