所以我使用这个小函数来打印一个向量。它有效,但我试图了解它是如何工作的:
void const print_vector(vector<int> const& v)
{
std::for_each(v.begin(), v.end(), [](const int& n) {std::cout << n << " ";});
}
Run Code Online (Sandbox Code Playgroud)
“n”变量如何知道指向向量的元素?
任何进一步的更正也表示赞赏
谢谢!
您的代码等效于:
void const print_vector(vector<int> const& v)
{
std::for_each(v.begin(), v.end(), foo);
}
void foo(const int& n)
{
std::cout << n << " ";
}
Run Code Online (Sandbox Code Playgroud)
您的 lambda 只是声明函数的一种简写方式foo
。
foo
然后将 的地址传递给for_each
。
for_each
循环遍历向量并foo
每次调用,将当前元素作为参数传入n
。
(注意:它并不完全等价。lambda 实际上是一个函子,而不是一个函数,但这只是混淆了问题,在这里没有区别。)
归档时间: |
|
查看次数: |
77 次 |
最近记录: |