Сообщение создать range и передать его в функцию от 05.03.2022 10:57
Изменено 05.03.2022 11:36 DTF
создать range и передать его в функцию
Добрый день.
Я начал разбираться что за зверь такой эти ranges, и что-то не могу понять, как с ними работать.
Вот вроде бы простая хотелка:
взять vector<int> или list<int>, отфильтровать значения,
результат передать в _нешаблонную_ функцию, внутри функцию, в этой функции проитерироваться по полученному диапазону
Т.е. что-то такое:
Как это сделать?
Или я чего-то не понимаю, и так нельзя?
Я начал разбираться что за зверь такой эти ranges, и что-то не могу понять, как с ними работать.
Вот вроде бы простая хотелка:
взять vector<int> или list<int>, отфильтровать значения,
результат передать в _нешаблонную_ функцию, внутри функцию, в этой функции проитерироваться по полученному диапазону
Т.е. что-то такое:
bool IsEven(int i)
{
return i % 2 == 0;
}
void Foo(a_strange_type<int> range)
{
for (int i : range)
std::cout << i << std::endl;
}
int main()
{
std::vector<int> v = {1, 2, 3};
std::list<int> l = {4, 5, 6};
Foo(v | IsEven);
Foo(l | IsEven);
}
Как это сделать?
Или я чего-то не понимаю, и так нельзя?
создать range и передать его в функцию
Добрый день.
Я начал разбираться что за зверь такой эти ranges, и что-то не могу понять, как с ними работать.
Вот вроде бы простая хотелка:
взять vector<int> или list<int>, отфильтровать значения,
результат передать в нешаблонную функцию, в этой функции проитерироваться по полученному диапазону
Т.е. что-то такое:
Как это сделать?
Или я чего-то не понимаю, и так нельзя?
Я начал разбираться что за зверь такой эти ranges, и что-то не могу понять, как с ними работать.
Вот вроде бы простая хотелка:
взять vector<int> или list<int>, отфильтровать значения,
результат передать в нешаблонную функцию, в этой функции проитерироваться по полученному диапазону
Т.е. что-то такое:
bool IsEven(int i)
{
return i % 2 == 0;
}
void Foo(a_strange_type<int> range)
{
for (int i : range)
std::cout << i << std::endl;
}
int main()
{
std::vector<int> v = {1, 2, 3};
std::list<int> l = {4, 5, 6};
Foo(v | IsEven);
Foo(l | IsEven);
}
Как это сделать?
Или я чего-то не понимаю, и так нельзя?