2023年9月9日,周六下午
这个还是挺难学的,我学了好几天...
在这里我会举大量的示例程序,这样可以有一个更好的理解,
不定期更新。
目录
推荐文章:
示例程序一:拼接字符串
示例程序二:求整数和
示例程序三:输出一串整数
推荐文章:
这里有一些不错的相关文章
Parameter pack(since C++11) - cppreference.com
Variadic function templates in C++ - GeeksforGeeks
Variadic templates in C++ - Eli Bendersky's website
在谷歌搜索“Variadic Template”就可以找到更多这样的文章
示例程序一:拼接字符串
#include <iostream>
#include <string>
using namespace std;
template<typename... Args>
string concatenate(Args... args) {
string result;
for (const auto& arg : {args...}) {
result += arg;
}
return result;
}
int main() {
cout << concatenate("Hello", " ", "world", "!") << endl; // 输出:Hello world!
return 0;
}
示例程序二:求整数和
#include <iostream>
using namespace std;
template<typename... Args>
int sum(Args... args){
int sum=0;
for(const int& arg:{args...})
sum+=arg;
return sum;
}
int main() {
cout <<sum(1,2,3,4,5,6,7,8,9,10) << endl; // 输出:55
return 0;
}
示例程序三:输出一串整数
示例程序一和二是通过遍历的方式,而这个示例程序是通过递归的方式。
使用递归的方式时要注意,递归到最后时函数的参数是空的,
所以要准备额外准备好一个函数来处理这种情况。
#include <iostream>
using namespace std;
void print()
{
cout << "最后一个元素"<<endl;
}
template <typename T, typename... Args>
void print(T first, Args... args)
{
cout << first << endl;
print(args...);
}
int main()
{
print(1, 2, 3,4,5,6,7);
return 0;
}