C++:默认参数和向量

0 c++ function vector optional-parameters

在C++中,我想要一个带有vector类型的可选参数的函数.如果没有提供参数,我希望变量的大小为0.我目前有

void v_connect::import(vector<int> vid_,vector<double> vpos_,vector<int> vbd_,vector<int>    bd_ss_=std::vector<int>() )
Run Code Online (Sandbox Code Playgroud)

但这不起作用.基本上,如果用户提供可选参数,bd_ss_我想进行检查bd_ss_.size()!=0,然后做一些额外的事情.如果用户没有提供参数,我想要bd_ss.size()==0.这可能吗?

Mik*_*our 9

无法判断可选参数是否是用户提供的.但是,您可以使用重载:

void v_connect::import(
    std::vector<int> vid_,
    std::vector<double> vpos_,
    std::vector<int> vbd_,
    std::vector<int> bd_ss_) 
{
    check(!bd_ss_.empty());
    do_extra_stuff();
    do_import(vid_, cpos_, vbd_, bd_ss_);
}

void v_connect::import(
    std::vector<int> vid_,
    std::vector<double> vpos_,
    std::vector<int> vbd_) 
{
    do_import(vid_, cpos_, vbd_, std::vector<int>());
}

// private:
void v_connect::do_import(
    std::vector<int> vid_,
    std::vector<double> vpos_,
    std::vector<int> vbd_,
    std::vector<int> bd_ss_)
{
    // common import code goes here
}
Run Code Online (Sandbox Code Playgroud)