关于C++编写可变参数的函数

在C++primer(5th)的6.2节中提出了一种编写能处理不同数量的实参的函数的方法。若是传递的所有参数类型相同,可以调用标准库类型<initializer_list>,initializer_list可以用来表示某种特定类型的值的数组。和vector一样,initializer_list也是一种模板类型,但是initialize_list的对象永远是常量。

编写一个比较函数来说明initializer_list的基本用法:

#include "stdafx.h"
#include<string>
#include<iostream>
#include<initializer_list>
using namespace std;
void compare(initializer_list<string> li) //定义compare函数,传递特定类型initializer_list<string>数组;
{
	for (auto beg = li.begin(); beg != li.end(); ++beg)
	{
		cout << *beg << " " ;
	}
	cout << endl;
}
void _tmain(int argc, _TCHAR* argv[])
{
	string a, b;
	cin >> a >> b;
	if (a != b)
	{
		compare({ "Different", a, b }); //传递一个值的序列,须将序列放在一个花括号类;
	}
	if (a == b)
	{
		compare({ "Same", "words" }); //第二次调用只传递两个参数;
	}
}





猜你喜欢

转载自blog.csdn.net/qq_34041083/article/details/78496042
今日推荐