如何为函数中的向量参数提供默认值
Posted
技术标签:
【中文标题】如何为函数中的向量参数提供默认值【英文标题】:How can you give a default value for a vector parameter in a function 【发布时间】:2014-02-01 05:19:05 【问题描述】:以下面的示例代码为例:
typedef std::vector<uint8_t> uint8Vect_t;
void setSomeThing(int value, uint8Vect parameters)
//... do some stuff ...
if (parameters.size() > 0)
//... do some stuff with parameters ...
int main(void)
uint8Vect intParams;
intParams.push_back(1);
intParams.push_back(2);
// Case 1 - pass parameters
setSomeThing(1, intParams);
// Case 2 - pass no parameters, default value should be used
setSomeThing(1);
return 0;
我的问题是我想为函数的向量参数设置一个默认值,如下所示:
setSomeThing(int value, uint8Vect parameters = 0)
如果没有传入参数“parameters”,则默认使用空向量。但是我无法弄清楚语法应该是什么 - 如果可能的话。我知道我可以使用重载函数,但我还是想知道如何做到这一点。
【问题讨论】:
你试过setSomeThing(int value, uint8Vect parameters = 0)
吗?
@LuchianGrigore err...不,我不想这样做,因为它似乎是错误的! :o
【参考方案1】:
类似这样的:
void setSomeThing(int value, uint8Vect_t parameters = uint8Vect_t()) ....
【讨论】:
【参考方案2】:调用默认构造函数将构造一个空向量。
#include <vector>
typedef std::vector<uint8_t> uint8Vect_t;
void setSomeThing(int value, uint8Vect_t parameters = uint8Vect_t)
if (parameters.size() > 0)
【讨论】:
这种方法更好,因为你可以创建一个自定义的默认向量,你可以使用任何你想要的值。但它需要 C++11 非常感谢。是的,我想说这适用于 c++11,但不适用于 c99 - 我没有指定我使用的是哪个 :) @Davidbrcz 不一定“更好”。创建一个自定义大小为 500 并将值设置为 42 的向量会非常乏味。 @Davidbrcz 我的答案和 juanchopanza 的答案之间的唯一区别是我修复了 op 代码上的一些拼写错误。 如果使用 C++11,即使uint8Vect_t parameters =
的工作方式也一样。【参考方案3】:
如果使用 C++11,即使 uint8Vect_t parameters =
也可以工作 - comment chris
【讨论】:
以上是关于如何为函数中的向量参数提供默认值的主要内容,如果未能解决你的问题,请参考以下文章