<分区>
在 C++ 中具有任意数量参数的 Java 函数等于什么?
void anyNumberOfParamas(String... strings) {
for (String str : strings) {
// do something with string
}
}
标签 c++
<分区>
在 C++ 中具有任意数量参数的 Java 函数等于什么?
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
有一些您应该注意的怪癖(例如,不能从中移动元素)。
关于c++ - 在 C++ 中,具有任意数量参数的 Java 函数等于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49257789/