#include <iostream>
#include <ranges>
#include <string>
#include <vector>
int main(int argc, char** argv) {
    std::vector<std::string> students{"BeefLiu", "Max", "Bid"};
    for (const auto& [id, name] : students | std::views::enumerate) {
        std::cout << "[" << id << "]" << name << std::endl;
    }
}

注意:std::views::enumerate是c++23引入的

std::views::enumerate 是 C++23 中一个非常实用的新特性。它最大的价值在于,让你在遍历容器时,能够以一种现代、简洁且安全的方式,同时获得元素的索引和值,彻底告别手动的索引计数

#include <ranges>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> nums = {1, 2, 3};
    
    // 关键点:使用 auto&& 或者 auto& 来获得可修改的引用
    for (auto&& [index, value] : std::views::enumerate(nums)) {
        value *= 10;  // 直接修改原始向量中的元素
    }
    
    for (int val : nums) std::cout << val << " "; // 输出: 10 20 30
}

 

标签: ranges, enumerate

上一篇: std::tuple学习
下一篇: std::string_view

添加新评论