gpt4 book ai didi

c++ - 如何在 C++ 中编写一个函数,该函数采用可变数量的 double vector ?

转载 作者:行者123 更新时间:2023-11-30 02:41:53 27 4
gpt4 key购买 nike

我正在尝试组合不同数量的 vector<double>变量为 vector< vector<double> > .我尝试使用 cstdarg图书馆。它抛出

error: cannot receive objects of non-trivially-copyable type ‘class myvectortype’ through ‘...’;

在哪里

typedef vector< double > myvectortype; typedef vector< myvectortype > datavectortype;

函数的定义

datavectortype ExtractData::GetPixelData(int num, ...)
{
datavectortype data_temp;
va_list arguments;
va_start (arguments, num);
for(int i = 0; i<num; i++)
{
data_temp.push_back(va_arg ( arguments, myvectortype));
}
va_end ( arguments );
return data_temp;
}

可以做些什么来解决这个问题,谢谢。

最佳答案

从 C++11 开始,你就可以做到了

std::vector<double> v1{1}, v2{2}, v3{3, 4};
std::vector<std::vector<double>> v {v1, v2, v3};

但是如果你想为此做一个函数,你可以使用可变参数模板:

template <typename T, typename ...Ts>
std::vector<T> make_vector(const T& arg, const Ts&... args)
{
return {arg, args...};
}

所以像这样使用它:

std::vector<double> v1{1}, v2{2}, v3{3, 4};
std::vector<std::vector<double>> v = make_vector(v1, v2, v3);

关于c++ - 如何在 C++ 中编写一个函数,该函数采用可变数量的 double vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27615284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com