函数中默认的`const vector <int>&amp; id`参数

时间:2017-02-28 09:24:58

标签: c++ vector

我有以下功能:

double Fitter(double EBeam, vector<KFParticle>
&MeasParticle, vector<TLorentzVector> &RecoParticle,
const vector<int> &id) {  
   do something
}

但有时候我不想提供最后一个参数(id向量)。我需要这样的东西:

double Fitter( ..., const vector<int> &id = empty_vector )

但我不想创建一些静态向量。

2 个答案:

答案 0 :(得分:5)

您可以默认构造一个内联空矢量:

$stmt = $dbo->prepare('SELECT * FROM products WHERE id=:id');
$stmt->execute(array(':id' => $id));
$res  = $stmt->fetchAll(PDO::FETCH_ASSOC);

由于double Fitter( ..., const vector<int> &id = std::vector<int>{} ) 是一个常量引用,它将起作用。

答案 1 :(得分:3)

在这种情况下,来自@Some程序员家伙的答案是完美的(如果你发现它有用,请提升他的意见):

double Fitter( ..., const vector<int> &id = std::vector<int>{} )

如果您发现无法实施默认值的情况,因为它是动态的,您可以写一个重载:

double Fitter(double EBeam,
              vector<KFParticle> &MeasParticle, 
              vector<TLorentzVector> &RecoParticle,
              const vector<int> &id) 
{  
    // ... do something 
}

double Fitter(double EBeam,
              vector<KFParticle> &MeasParticle, 
              vector<TLorentzVector> &RecoParticle) 
{ 
  vector<int> id; // you could do something dynamic here instead
  return Fitter(EBeam, MeasParticle, RecoParticle, id);
}