gpt4 book ai didi

vector &的C++默认参数?

转载 作者:IT老高 更新时间:2023-10-28 12:44:20 25 4
gpt4 key购买 nike

我有一个函数,

void test( vector<int>& vec );

如何设置 vec 的默认参数?我试过了

void test( vector<int>& vec = vector<int>() );

但是有一个警告“使用了非标准扩展:'默认参数':从 'std::vector<_Ty>' 转换为 'std::vector<_Ty> &'”

有没有更好的方法来做到这一点?而不是

void test() {
vector<int> dummy;
test( dummy );
}

问候,投票站

最佳答案

你试过了吗:

void test(const vector<int>& vec = vector<int>());

C++不允许将临时对象绑定(bind)到非常量引用。

如果你真的需要 vector<int>& (不是 const 之一),您可以声明一个静态实例并将其用作默认(因此非临时)值。

static vector<int> DEFAULT_VECTOR;

void test(vector<int>& vec = DEFAULT_VECTOR);

但请注意,因为 DEFAULT_VECTOR 将(可以)被修改并且不会在每次调用时重置!不确定这是否是您真正想要的。


感谢 stinky472 ,这是一个线程安全的替代方案:

与其提供默认值,不如重载test()零参数版本调用另一个版本:

void test()
{
vector<int> vec;
test(vec);
}

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com