gpt4 book ai didi

c++ - 如何使函数不使用 STL 容器参数(类似于空指针)?

转载 作者:行者123 更新时间:2023-11-28 00:25:57 25 4
gpt4 key购买 nike

我确定这里已经有人回答了,但是找不到...比如说,一个函数有一个参数,它是对 STL vector 的引用。有时函数必须填充 vector ,有时则不需要。我怎样才能让函数知道什么时候不应该填充 vector ?如果参数是一个指针,那么使用空/非空指针调用函数就可以完成这项工作。是否可以在不使用指针或附加参数的情况下对引用执行相同的操作?

添加:如果我使用以下函数调用会怎样:

func( std::vector<int>() );

函数头是:

func( std::vector<int>() &vec )
{...}

它什么时候会起作用?我在真实代码中见过这个技巧。这是否意味着该函数仍然对 vector 执行操作,但调用者不应该费心在他的代码中创建 vector ?

最佳答案

这不一定是最佳做法,但可以做到。通常,可选参数是用指针而不是引用来指定的。但是您可以创建一个对您的函数具有特殊意义的哨兵对象。

static std::vector<MyStuff> MyVecNull;

void MyFunc(std::vector<MyStuff>& vec = MyVecNull)
{
if (&vec != &MyVecNull) // only do the following if a vector was passed...

关于c++ - 如何使函数不使用 STL 容器参数(类似于空指针)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25088629/

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