c++之ranges(一)
#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
}