Załóżmy, że mam zakres T o nazwie rng. Mogę teraz tworzyć grupy o zakresie zakresów T, które można teraz zdefiniować jako grupy.zakresy zakresów do wektora wektorów
Mogę też zrobić to
auto groups = ranges::view::group_by(rng, bin_op) | ranges::to_vector;
dostać wektor zakresów T. Jednak to
auto groups = ranges::view::group_by(rng, bin_op)
| ranges::to_vector
| ranges::action::transform([] (auto r) { return r | ranges::to_vector; };
jak
auto groups = ranges::view::group_by(rng, bin_op)
| ranges::to_vector
| ranges::action::transform([] (auto r) { return std::vector<T>{} | ranges::action::push_back; };
nie będzie działać, ponieważ najwyraźniej zakresy działania :: :: transformacji() zwraca pustkę w tym przypadku i „typ wyniku funkcji przekazany do działania :: transform musi być zapisywalny z powrotem w zakresie źródłowym ".
Jak zmienić zakresy zakresów w wektor wektorów?
Uwaga: przepraszamy za złe tagi, ale nie mogłem znaleźć znacznika zakresów/zakresów-ts/zakresów-v3, nie mogę go utworzyć i nie można go użyć w tytule.
Rzeczywiście to działa. Tak więc pomysł polega na pracy od wewnątrz na zewnątrz, a nie na zewnątrz. Jakiś pomysł, dlaczego ten drugi kierunek nie zadziała? –
@ Rich może to możliwe, ale byłoby to nieefektywne, ponieważ wektory istnieją, gdy zakresy są leniwy. Możesz mieć pośredni leniwy zakres wektorów dla kosztu 0, ale pośredni wektor leniwych zakresów musi istnieć i ma koszt. – Yakk
To ma sens. Kinda zawstydzająca, że mój mózg Haskell nie zauważył ... Dzięki za pomoc. –