C++三个主题

C++三个主题

variadic template(数量不定的模版参数)

其中示例来源于侯捷老师

#include <iostream>
#include <cstring>
using namespace std;

void print()
{

}
template<typename T, typename... Types> 
void print(const T & first, const Types&...args) {
    cout << "sizeof :" << sizeof...(args) << endl;
    cout << first << endl;
    print(args...);        //继续递归进行函数print 的调用
}



int main()
{
    print(7.5, "hsdfo", bitset<16>(377), 42);
}

我们可以看到在模版参数中除了T,还有一个... Types

后面那个就是意味着,我这个函数可以接受一个T类型参数和不定数量的参数,其中第二个看作是 一个包

如果想要查看这个包里面参数的数量的话,使用sizeof...(args),args不是关键字,是你指定的参数名称

上面的print函数的例子就是:

  • 我接收的参数是一个参数 + 一个参数包
  • 函数执行过程是打印第一个参数,然后将包作为参数继续传递给print
  • 那么传递给下一个print,收到的参数是 上面大包的第一个参数 + 除去一个参数后的小包
  • 直到没有参数的时候调用上面没有参数的 print
auto和 for的配合使用

auto 可以根据你的表达式进行自动的类型推导,for (decl : coll)可以遍历容器

因此我们可以使用上述进行简单的书写,同时在对于参数类型十分复杂的时候还是可以简化的

//例如说打印二维	vector中的第一个元素
void printS(const vector<vector<int>> & V) {
  for (auto each : V) {
    //每一个	each 都是一个vector
    cout << each[0];
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值