void print(int&A) {cout<<A;}for_each(a.begin(),a.end(),print);用这个可以输出list的每一个数,这个函数的形参是什么意思?(int&A)
for_each(a.begin(),a.end(),print);该函数用于重复执行某个函数 在此重复执行前面声明的print()函数
int 是数据类型 整型 四字节32位 &为取地址符 可以理解为引用或者指针 用于传进参数 A就是参数名 用count将A输出
所以print是将传进的参数输出 那么for_each重复执行print从a.begin()输出到a.end()
是引用,可以看成变量的别名
sunny
sunny
4
141
2007-03-15T06:52:00Z
2007-03-15T06:57:00Z
1
526
3000
sonix
25
7
3519
11.5606
85
Clean
7.8 磅
0
2
......
答案就在这里:可变参数函数实现
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
void print(int&A) 中&是引用, 也可以说是变量的别名, 与void print(int A)效果一样, 但是效率高于print(int A)
再者如果想改变传入变量的值使用引用可以实现, 使用实参不行, 因为使用实参时, 是copy了一份原来的变量, 传入的实参与传入的变量就没了联系
例如:
void print(int& a) {
a = 5;
}
int a = 4;
print(a);
cout<<a; //这时候输出5, a的值在print中改变了
void print(int a) {
a = 5;
}
int a = 4;
print(a);
cout<<a; //这时候输出4, 并不改变a的值
for_each()函数是一个仿函数,相当于是父进程,print()函数则是一个子进程。