13 Mart 2016 Pazar

std::begin ve std::end

Giriş
std::begin ve std::end C++11 ile geldiler. Şu satırı dahil ederiz.
#include <iterator>
std::begin
Şöyle kullanırız.
int myint[] ={1,2,3,4,5,6,7,8,9};
std::find(begin(myint),end(myint),9);
Bu metodun container ve array için özelleşmiş halleri var. container için şöyledir.
template< class C > 
auto begin( C& c ) -> decltype(c.begin());
Array için C++11 ile şöyledir.
template <typename T, std::size_t N>
T* begin(T (&ar)[N]) {
  return ar;
}
C++14 ile metod imzası değişmiştir.
template< class T, std::size_t N >
constexpr T* begin( T (&array)[N] );
std::end
Bu metodun container ve array için özelleşmiş halleri var. container için şöyledir.
template< class C > 
auto begin( C& c ) -> decltype(c.end());
Array için C++11 ile şöyledir.
template <typename T, std::size_t N>
T* end(T (&ar)[N]) {
  return ar + N;
}
C++14 ile metod imzası değişmiştir.
template< class T, std::size_t N >
constexpr T* begin( T (&array)[N] );



Hiç yorum yok:

Yorum Gönder