std::for_each用于遍历容器元素并执行操作,需包含<algorithm>头文件,支持函数指针、仿函数和lambda表达式,常用lambda实现简洁遍历。

在C++中,std::for_each 是一个来自 <algorithm> 头文件的算法函数,用于对容器中的每个元素执行指定的操作。它比传统的 for 循环更简洁、更具函数式编程风格,同时支持函数指针、函数对象(仿函数)和 lambda 表达式。
使用 std::for_each 前,需包含
std::for_each 的基本用法如下:
std::for_each(起始迭代器, 结束迭代器, 操作函数);它会从起始迭代器到结束迭代器(前闭后开区间)遍历每个元素,并对每个元素调用指定的操作。
立即学习“C++免费学习笔记(深入)”;
lambda 是最常用的方式,简洁直观:
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::for_each(numbers.begin(), numbers.end(), [](int n) {
std::cout << n << " ";
});
// 输出: 1 2 3 4 5
也可以修改元素(需按引用捕获):
std::for_each(numbers.begin(), numbers.end(), [](int& n) {
n *= 2;
});
// 此时 numbers 变为 {2, 4, 6, 8, 10}
定义一个普通函数,然后传入 for_each:
void print(int n) {
std::cout << n << " ";
}
std::for_each(numbers.begin(), numbers.end(), print);
定义一个重载了 operator() 的类:
struct Print {
void operator()(int n) {
std::cout << n << " ";
}
};
std::for_each(numbers.begin(), numbers.end(), Print{});
for_each 适用于所有支持迭代器的标准容器,如 std::list、std::deque、std::array 等:
std::list<std::string> words = {"hello", "world"};
std::for_each(words.begin(), words.end(), [](const std::string& s) {
std::cout << s << std::endl;
});
注意:对于 std::map 或 std::unordered_map,元素是 std::pair,需访问 first 和 second:
std::map<int, std::string> m = {{1, "one"}, {2, "two"}};
std::for_each(m.begin(), m.end(), [](const auto& pair) {
std::cout << pair.first << ": " << pair.second << std::endl;
});
以上就是C++如何在容器中使用for_each遍历元素的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号