Java函数在C++中具有任意数量的参数
What would be equal of Java function with any number of parameters in C++?
Java函数在C++中具有任意数量的参数是什么?
void anyNumberOfParamas(String... strings) {
for (String str : strings) {
// do something with string
}
}
您有两种选择:可变参数模板或采用std::initializer_list
函数。
第一个看起来像这样:
template <typename... Ts>
void anyNumberOfParams(const Ts&... xs)
{
(something(xs), ...);
}
使用此方法,每次使用不同类型的调用anyNumberOfParams
时,都会获得不同的实例化。"迭代"在编译时完成。
如果要允许此函数仅接受std::string
,还需要正确约束Ts...
。
第二个看起来像这样:
void anyNumberOfParams(std::initializer_list<std::string> xs)
{
for(const auto& x : xs) something(x);
}
std::initializer_list
基本上是const
元素数组上的语法糖。在这种情况下,迭代是在运行时完成的,并且只有一个实例化 anyNumberOfParams
。
不幸的是,std::initializer_list
有一些你应该注意的怪癖(例如,无法从中移动元素(。
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 在C++中传递给函数时,为什么要指定数组大小作为参数
- C++ - 声明指向返回任何类型并获取任意数量参数的函数的指针
- 具有任意数量参数的模板函数
- 使用 std::function 作为具有任意数量参数的数据成员
- 使用模板将任意类型参数传递给 C++ 中的函数
- C++具有模板成员的类,该类使用任意模板参数构造模板成员
- is_invocable使用任意函数参数类型
- 如何为函数参数指定任意模板参数?
- 如何在C++中找到任意数组的大小
- 在具有任意数量子级的节点树中查找节点
- 变量数参数列表从其第二个条目开始
- 读取任意大小的任意数组
- 函数指向具有任意数量参数的任何成员函数
- 如何创建一个工厂函数模板来构造给定任意数量参数的对象
- 如何传递任意数组的结构到一个函数
- 可以在c++中使用任意模板参数