我有一个功能,
void test( vector<int>& vec );
Run Code Online (Sandbox Code Playgroud)
如何设置vec的默认参数?我试过了
void test( vector<int>& vec = vector<int>() );
Run Code Online (Sandbox Code Playgroud)
但是有一个警告"使用非标准扩展:'默认参数':从'std :: vector <_Ty>'转换为'std :: vector <_Ty>&'"
有一个更好的方法吗 ?代替
void test() {
vector<int> dummy;
test( dummy );
}
Run Code Online (Sandbox Code Playgroud)
此致,Voteforpedro
ere*_*eOn 60
你有没有尝试过:
void test(const vector<int>& vec = vector<int>());
Run Code Online (Sandbox Code Playgroud)
C++ 不允许temporaries绑定到非const引用.
如果你真的需要一个vector<int>&(不是const一个),你可以声明一个静态实例并将其用作默认值(因此是非临时的).
static vector<int> DEFAULT_VECTOR;
void test(vector<int>& vec = DEFAULT_VECTOR);
Run Code Online (Sandbox Code Playgroud)
但请注意,因为DEFAULT_VECTOR将被修改,并且不会在每次调用时重置!不确定这是你真正想要的.
感谢stinky472,这是一个线程安全的替代方案:
您也可以test()使用调用其他版本的零参数版本重载,而不是提供默认值:
void test()
{
vector<int> vec;
test(vec);
}
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以只传递一个指向向量的指针并将其初始化为 NULL
void test( vector<int>* vec = NULL );
Run Code Online (Sandbox Code Playgroud)
我知道这个问题是在 2010 年提出的,但对于 C++11 你可以这样做:
void test( vector<int>& vec = {}) {
// Awesome code here
}
Run Code Online (Sandbox Code Playgroud)
正如这个答案所指出的。
| 归档时间: |
|
| 查看次数: |
40965 次 |
| 最近记录: |