C++:默认参数和 vector

标签 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>() )

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

最佳答案

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

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
}

关于C++:默认参数和 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11832134/

相关文章:

c++ - 在 C++ 中比较 vector 的最快方法是什么?

c++ - winAPI 中的组合框样式编辑控件

c++ - 如何使usb端口静态?

r - 如何使用函数和 if else() 对负值求和?

c - 传递给 C 中的函数时,char 数组的大小发生变化

C# 将生成的数字列表转换为 int 数组

vector - 在 C++ 中执行 k 意味着在二进制向量上进行聚类的快速方法

c++ - 无法在应用商店的沙盒 OSX 应用中使用 libproc

c++ - 无法从 int main() 主体调用函数

javascript - 如果输入值为字符串,则更改窗口位置