如何把变量参数列表的一部分到另一个函数?



我正在处理这样一个问题,我有函数f(std::initializer_list<double> list),我想把变量参数列表的一部分(第二个变量参数结束)到另一个函数,如:

void f(std::initializer_list<double> list){
f1(*(list.begin()+1,...,*(list.end-1));
}

f1函数是正常的函数,像void f1(double x)void f1(double x1,double x2),我想f可以做不同的f1变量参数数,我怎么得到它?

初始化列表似乎没有接受一对迭代器的构造函数,参见这里。但是你可以使用span:

#include<iostream>
#include<span>
void f1(double a, double b)
{
}
void f2(auto list)
{
for(auto i : list)
{
std::cout<<i<<std::endl;
}
}
void f(std::initializer_list<double> list){
size_t size = std::distance(std::begin(list),std::end(list))-1;
auto list = std::span{std::next(std::begin(list)), size};
f1(list[0],list[1]);
f2(list);
}
int main()
{
auto a = std::initializer_list<double>{1.0,2.0,3.0};
f(a);
}

演示注意,前面的代码可以更通用。但是应该可以理解这个想法。

相关内容

最新更新