从常量变量复制矢量

时间:2015-08-11 03:47:15

标签: c++

我正在考虑一个我需要尊重以下界面的函数:

double logDensity(double x, PDFType type,
                  std::vector<std::vector<double const *> > const &parameters,
                  double const *lower, double const *upper) const;

我需要将parameters向量拆分为此函数内的两个向量:

vector<double> f = (parameters[0]);
vector<double> t = (parameters[1]);

但是这段代码会引导我发现这些错误消息:

DPwexp.cc: In member function 'double pwexponential::DPwexp::logDensity(double, PDFType, const std::vector<std::vector<const double*> >&, const double*, const double*) const':
DPwexp.cc:38:38: error: conversion from 'const std::vector<const double*>' to non-scalar type 'std::vector<double>' requested
 vector<double> f = (parameters[0]);
                                  ^

将这两个向量复制到我的函数中的新变量的最佳方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用:

// Create f with the right number of elements.
std::vector<double> f(parameters[0].size());

// Use std::transform to convert pointers to double and
// store them in f.
std::transform(parameters[0].begin(), parameters[0].end(), 
               f.begin(), [](double const* in) { return *in; });

// Similarly for t.
std::vector<double> t(parameters[1].size());
std::transform(parameters[1].begin(), parameters[1].end(), 
               t.begin(), [](double const* in) { return *in; });

答案 1 :(得分:1)

如果参数由const&传递,则打算不在函数内部更改它们。为什么需要复制它们?原型假定您将使用参数值而不更改。

const vector<double const*>& f = (parameters[0]);
const vector<double const*>& t = (parameters[1]);