C++11可变参数函数与for循环




//auto为自动变量类型设置符 例如 auto p = 1; 则p为int类型; auto自动适应类型

//对于template < typename T, typename ... Args >说 参数表是一个T类型和一个 ...Args类型打包
//对于 void func( T value, Args ... args ) 说 参数表是一个T类型的数据value和一个Args类型打包的数据打包args
//那么进行调用  func( n, m, 'a', str ); 时候, 调用了 void func( T value, Args ... args )
// n对应了value 而m, 'a', str 打包对应了args;
// 输出了value; 然后在进行一次打包 调用func( args ... ); 相当于func( m, 'a', str );
// 然后m对应了value 剩下两个数打包, 继续递归调用 直到打包args里包含0个元素的时候;
// 调用func( args ... ); 相当于无参函数 即调用了 func(); 则调用结束;


#include <iostream>
#include <string>

void func()
{

}

template < typename T, typename ... Args >
void func( T value, Args ... args )
{
 std::cout << value << ", ";
 func( args ... );
}

int main()
{
 int p[] = { 1, 2, 3, 4, 6, 7, 8, 2 };
 for( auto point : p )       //从p数组中取出每一个数字 给point 然后输出point;
 {
  std::cout << point << " ";    //auto自动设置point类型
 }

 std::cout << std::endl;

 for( auto &point : p )      //如果类型较大 应该使用引用传递, 提高效率
 {
  if( point == 4 )
  {
   point = 2;        //修改其中的值 按值传递和引用传递都可以改值
  }
  std::cout << point << " ";
 }

 std::cout << std::endl;

 int n = 14;
 double m = 15.5;
 std::string str = "asdf";
 func( n, m, 'a', str );
 
 return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值