我知道范围内的算法(例如sort
)支持投影,但在我看来,没有办法为视图获得该功能......我是对的吗?
例如,考虑以下工作代码:
#include <algorithm>
#include <ranges>
#include <vector>
#include <iostream>
enum Color {
Red,
Green,
Blue
};
struct Cat {
int age;
Color color;
};
int main() {
std::vector<Cat> cats{{.age = 10,.color=Color::Red}, {.age = 20,.color=Color::Blue}, {.age = 30,.color=Color::Green}};
auto is_red = [](const auto& cat) {return cat.color == Color::Red;};
for (const auto& cat: cats | std::views::filter(is_red)) {
std::cout << cat.age << std::endl;
}
}
有没有办法删除 lambda 并执行以下操作:
for (const auto& cat: cats | std::views::filter(&Cat::color, Color::Red) {
注意:我的问题是成员变量投影,但显然在实际代码中还需要成员函数调用。