在C++中,有没有一种方法可以在向量的每个元素上调用函数,而不使用遍历所有向量元素的循环?类似于Python中的“map”。
发布于 2012-05-09 20:51:44
#include <algorithm> //std::for_each
void foo(int a) {
std::cout << a << "\n";
}
std::vector<int> v;
...
std::for_each(v.begin(), v.end(), &foo);
发布于 2012-05-09 21:04:48
在C++ 11上:您可以使用lambda。例如:
std::vector<int> nums{3, 4, 2, 9, 15, 267};
std::for_each(nums.begin(), nums.end(), [](int &n){ n++; });
发布于 2012-05-09 20:58:50
如果你有C++11,还有一个更短的方法:ranged-based for。它的目的就是这样。
std::vector<int> v {1,2,3,4,5};
for (int element : v)
std::cout << element; //prints 12345
您还可以在适当的时候对其应用引用和const,或者在类型为long时使用auto。
std::vector<std::vector<int>> v {{1,2,3},{4,5,6}};
for (const auto &vec : v)
{
for (int element : vec)
cout << element;
cout << '\n';
}
输出:
123
456
https://stackoverflow.com/questions/10516495
复制相似问题