SSmallOrange

微风需要竹林,溪流需要蜻蜓

技术碎片(持续更新)

Modern C++ Grammar std::ranges std::ranges 库的核心思想是让算法直接操作容器(而非迭代器对),并支持管道式(pipeline)链式调用。 对比以前的迭代器使用方式: 1 2 3 4 5 6 7 // 找到指定元素 std::sort(v.begin(), v.end()); auto it = std::find(v.begin(), v.end(), 4); // std::ranges std::ranges::sort(v); auto it = std::ranges::find(v, 4); 以下是一些std::ranges的常用方式: 转换: std::transform 1 2 3 4 5 6 7 8 9 10 11 12 struct Player { std::string name; int score; }; std::vector<Player> players = {{"Alice", 90}, {"Bob", 75}, {"Carol", 88}}; // 提取所有玩家名字 auto names = players | std::views::transform(&Player::name); // → {"Alice", "Bob", "Carol"}(惰性视图,不拷贝) // 提取分数并乘以 1.1 加权 auto weighted = players | std::views::transform([](const Player& p) { return p.score * 1.1; }); // → {99.0, 82.5, 96.8} 过滤: ...

2025-07-20   29分钟   SSmallOrange