C++语言
Completion requirements
参数的类型可以是 std::initializer_list<int>
。这允许以下两种调用方式:
DoFunction({11,22,33})
DoFunction(11,22,33)
(需配合 可变参数模板 才能支持)
示例如下:
#include <iostream>
#include <initializer_list>
void DoFunction(std::initializer_list<int> values) {
for (int value : values) {
std::cout << value << " ";
}
std::cout << std::endl;
}
int main() {
DoFunction({11, 22, 33}); // 允许的调用方式
// DoFunction(11, 22, 33); // ❌ 这种调用方式不适用于 std::initializer_list
return 0;
}
如果希望支持 DoFunction(11,22,33)
这样的调用方式,需要使用 可变参数模板,如下:
#include <iostream>
template<typename... Args>
void DoFunction(Args... args) {
(std::cout << ... << args) << std::endl;
}
int main() {
DoFunction(11, 22, 33); // ✅ 变长参数支持
return 0;
}
但 std::initializer_list<int>
无法直接与变长参数模板混用,所以两者适用于不同的场景。
Last modified: Thursday, 30 January 2025, 11:23 AM