我正在尝试将不同数量的vector<double>
变量合并到vector< vector<double> >
中。我尝试使用cstdarg
库。它抛弃了
错误:无法通过'...'接收非平凡可复制类型'class myvectortype'的对象;
,其中
typedef vector&lt;双&gt; myvectortype; typedef vector&lt; myvectortype&gt; 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;
}
可以做些什么来解决这个问题,谢谢。
答案 0 :(得分:3)
从C ++ 11开始,你已经可以做到了
std::vector<double> v1{1}, v2{2}, v3{3, 4};
std::vector<std::vector<double>> v {v1, v2, v3};
但是如果你想为它做一个函数,你可以使用variadic template:
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);