12 Kasım 2020 Perşembe

std::stable_partition

Giriş
Functor'ın false döndürdüklerini sona taşır.

Örnek
Şöyle yaparız
std::vector<uint32_t> v {0,1,2,3,4,0,0,0};

auto bound = std::stable_partition(v.begin(), v.end(), [](auto element)
{
  return element > 0;
});
Bir bölümlemenin boş olduğunu anlamak için şöyle yaparız.
bound == v.begin() when first partition is empty.
bound == v.end() when second partition is empty.
Bölümlemenin büyüklüğünü anlamak için şöyle yaparız.
std::distance(v.begin(), bound) tells the size of the first partition
std::distance(bound, v.end()) tells the size of the second partition
Örnek 
Şöyle yaparız
bool try_to_process (fs::path const& p)
{
  ...
}

std::vector<fs::path> paths = ...;

paths.erase (std::stable_partition(paths, try_to_process), paths.end());

Hiç yorum yok:

Yorum Gönder