gpt4 book ai didi

c++ - 如何在没有参数的情况下从 for_each() 调用函数

转载 作者:行者123 更新时间:2023-11-30 03:19:00 25 4
gpt4 key购买 nike

我在 C++98 中编写的代码很少,但我遇到了一个问题,我看到一个函数从 for_each() 循环中被调用,并且该函数定义有一个参数,但在调用时我们没有向它传递任何参数。

代码如下:

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

void print_square(int i)
{
cout << i*i << endl; // here i value should be garbage
}

int main()
{
vector<int> v;
// vector gets filled
for_each(v.begin(), v.end(), print_square); //print_square is called
return 0;
}

为什么编译器在这里没有报错?如何打印 vector 值?

最佳答案

你对表达式有两个误解 for_each(v.begin(), v.end(), print_square)

  1. 这不是一个循环。
  2. 它不包含对 print_square 的调用。

它只是对 for_each 函数模板实例化的函数调用。该函数接受 print_square 作为参数。现在,在函数内,很可能会有一个循环和对 print_square 的调用(带参数)。这就是您看到输出的原因。

关于c++ - 如何在没有参数的情况下从 for_each() 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54169369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com