Giriş
STL algoritmalarında iterator tipleri çok kullanıılır. iterator_traits iterator'ler ile çalışmayı kolaylaştırır.
iterator_category Alanı
Örnek
Şöyle yaparız.
Bir iterator'ın value_type tipini
Örnek
Şöyle yaparız.
Şöyle yaparız
Diğer
Aslında iterator_traits belirtilen iterator içindeki value_type'ı döndürmekten başka bir şey yapmaz. Yani şöyle de kodlayabilirdik.
STL algoritmalarında iterator tipleri çok kullanıılır. iterator_traits iterator'ler ile çalışmayı kolaylaştırır.
iterator_category Alanı
Örnek
Şöyle yaparız.
template <typename It>
std::string cat(It const&) {
return typeid(typename std::iterator_traits<It>::iterator_category).name();
}
value_type AlanıBir iterator'ın value_type tipini
typename std::iterator_traits<Iterator>::value_type
şeklinde alabilmemizi sağlar.Örnek
Şöyle yaparız.
std::iterator_traits<int*>::value_type
ÖrnekŞöyle yaparız
#include <iterator>
template<typename Iterator>
typename std::iterator_traits<Iterator>::value_type
sum(Iterator begin, Iterator end )
{
using value_type = typename std::iterator_traits<Iterator>::value_type;
value_type s = value_type();
for (Iterator it = begin; it != end; it++) {
s += *it;
}
return s;
}
Bir başka örnek'te benzer bir kullanım görülebilir.Diğer
Aslında iterator_traits belirtilen iterator içindeki value_type'ı döndürmekten başka bir şey yapmaz. Yani şöyle de kodlayabilirdik.
template <typename Iter> auto func(Iter &first, Iter &last)
{
using IterType = typename Iter::value_type;
...
}
Hiç yorum yok:
Yorum Gönder