Код: Выделить всё
#include
#include
#include
int main() {
const std::vector input = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto output = input
| std::views::filter([](const int n) { std::print("{} ", n); return n % 3 == 0; })
| std::views::transform([](const int n) {return n * n; });
const std::vector vector = std::ranges::to( output );
std::println("\ninput size: {} output size: {}", input.size(), vector.size() );
}
Код: Выделить всё
0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
input size: 11 output size: 4
Когда я пытаюсь с помощью простого цикла for напечатать элементы, каждый элемент оценивается только один раз:
Код: Выделить всё
#include
#include
#include
int main() {
const std::vector input = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto output = input
| std::views::filter([](const int n) { std::print("{} ", n); return n % 3 == 0; })
| std::views::transform([](const int n) {return n * n; });
int sum = 0;
for ( int i : output ) sum += i;
std::println("\nsum: {}", sum);
}
Код: Выделить всё
0 1 2 3 4 5 6 7 8 9 10
sum: 126
Подробнее здесь: https://stackoverflow.com/questions/793 ... ated-twice