c++ 函数使用可变参数
例子一: #include <iostream> // 递归终止函数 void print() { std::cout << std::endl; } // 递归函数模板,打印第一个参数并递归打印剩余参数 template <typename T, typename... Args> void print(T first, Args... args) { std::cout << first << " "; print(args...); } int main() { print(1, 2.5, "Hello", 3.14f); return 0; } 在上面的示例中,我们定义了一个名为 print 的函数模板,该模板使用可变参数模板来实现参数数量可变的功能。在 print 函数模板中,我们首先定义了一个递归终止函数 print,它不接受任何参数并在递归到最后一个参数后结束。然后,我们定义了一个模板函数 print,它接受一个参数 first 和一个参数包 Args...,并递归地打印参数 first 并调用自身来处理剩余的参数。
例子二: #include <iostream> #include <initializer_list> // 使用 initializer_list 实现可变参数求和 int sum(std::initializer_list<int> args) { int result = 0; for (int value : args) { result += value; } return result; } int main() { std::cout << sum({1, 2, 3, 4, 5}) << std::endl; // 输出 15 std::cout << sum({10, 20, 30}) << std::endl; // 输出 60 return 0; } 在上面的示例中,我们定义了一个 sum 函数,它接受一个 std::initializer_list<int> 作为参数,这个参数允许我们传递一个整数列表作为参数。在 sum 函数中,我们使用了 for 循环来遍历列表中的所有值,并计算它们的总和。 在 main 函数中,我们使用了 sum 函数来计算不同列表中所有整数的总和。通过使用 std::initializer_list,我们可以实现函数参数为可变参数的功能。 这个例子展示了另一种使用可变参数的方式,通过使用 std::initializer_list 来实现函数参数为可变参数的功能。
如果 可变参数为 std::vector: #include <iostream> #include <vector> int sum(const std::vector<int>& values) { int result = 0; for (int value : values) { result += value; } return result; } int main() { std::vector<int> vec1 = {1, 2, 3, 4, 5}; std::vector<int> vec2 = {10, 20, 30}; std::cout << sum(vec1) << std::endl; // 输出 15 std::cout << sum(vec2) << std::endl; // 输出 60 return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人