Giriş
Şu satırı dahil ederiz.
Şöyle yaparız.
Elimizde struct içinde struct olsun.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Örnek
Elimizde iki yapı olsun.
Şöyle yaparız.
Şöyle yaparız.
Elimizde bir struct olsun.
Şu satırı dahil ederiz.
#include <range/v3/all.hpp>
Kolay kullanım için şu satırı dahil ederiz.using namespace ranges;
concat metoduŞöyle yaparız.
const std::vector<std::string> v1{"A", "B", "C"}, v2{"D", "E", "F"};
for (const auto& s : ranges::view::concat(v1, v2)) {
std::cout << s << std::endl;
}
filter metoduElimizde struct içinde struct olsun.
struct Foo {};
struct FooBar{
bool is_valid;
Foo foo;
};
Şöyle yaparız.std::vector<Foo> get_valid_foos(const std::vector<FooBar>& foobars) {
return foobars
| view::filter(&FooBar::is_valid)
| view::transform(&FooBar::foo);
}
ints metoduÖrnek
Şöyle yaparız.
using namespace ranges;
int x = accumulate(view::ints(0) | view::take(10), 0); // 45
ÖrnekŞöyle yaparız.
int x = accumulate(view::ints(0, 10), 0);
ÖrnekŞöyle yaparız.
const std::vector<int> result = ranges::view::ints(23, 58); // upper bound is exclusive
iota metoduÖrnek
Elimizde iki yapı olsun.
std::vector<int> numbers;
...
std::vector<std::vector<int>::iterator> pointers;
Şöyle yaparız.copy(view::iota(numbers.begin(), numbers.end()), back_inserter(pointers));
ÖrnekŞöyle yaparız.
int N = 7;
std::vector<int> numbers = ranges::view::iota(0, N);
std::vector<std::vector<int>::iterator> pointers =
ranges::view::iota(numbers.begin(), numbers.end());
std::cout << "indirectly printing out the numbers from 0 to " << N << '\n';
ranges::copy(ranges::view::indirect(pointers),
ranges::ostream_iterator<>(std::cout, " "));
std::cout << '\n';
stride metodu - Ayırarak dolaşmakŞöyle yaparız.
std::vector<std::size_t> src {1, 2, 3, 4, 5, 6, 7};
const auto min_max = minmax (src | view::stride (3));
std::cout << min_max.first << " " << min_max.second << std::endl;
transform metoduElimizde bir struct olsun.
struct MyStruct {
explicit MyStruct(std::string name) : name_(name){}
std::string name() const { return name_; }
private:
std::string name_;
};
std::vector<MyStruct> vm;
vm.emplace_back("asd");
vm.emplace_back("qwe");
vm.emplace_back("zxc");
Şöyle yaparız.std::vector<std::string> vs = vm | ranges::view::transform (&MyStruct::name);
Hiç yorum yok:
Yorum Gönder