11 Haziran 2020 Perşembe

std::views::iota - C++20

Giriş
C++20 ile geliyor. Bu metodun kardeşi de std::ranges::iota_view(). Bu metod aslında muhtemelen arka tarafta bir iterator döndürüyor. Nasıl gerçekleştirildiği burada 

std::iota() ile farkı
C++11 ile gelen std::iota() bir veri yapısını doldurur. Şöyle yaparız
#include <vector>
#include <numeric> // std::iota

std::vector<int> makeRange(const int start, const int end) noexcept
{
  std::vector<int> vecRange(end - start);
  std::iota(vecRange.begin(), vecRange.end(), start);
  return vecRange;
}
Kullanım
Örnek
Şöyle yaparız
for (int const i : std::views::iota(0, 10))
{
   std::cout << i << " ";  // ok
}
Örnek
Şöyle yaparız
std::vector<int> const v = ...;
auto const indices = std::views::iota(0u, u.size()) | std::views::common;
Daha sonra sayıları kullanmak için şöyle yaparız
std::begin(indices), std::end(indices)

Hiç yorum yok:

Yorum Gönder