c++ - 始终返回相同 vector 的函数

标签 c++ function static

我正在尝试编写一个将返回 vector 的实用程序函数。返回的 vector 将始终具有相同的条目。我正在使用它来过滤枚举 (Directions),以便客户端可以获得所需的子集。

下面是我希望如何解决这个问题的一个例子:

std::vector<Directions> horizontalDirections()
{
    static std::vector<Directions> toReturn;
    if (toReturn.size() == 0)
    {
        toReturn.push_back(Left);
        toReturn.push_back(Right);
    } 
    return toReturn;
}

这是解决问题的正确方法吗?

最佳答案

你这样做的方式有效。但我会返回一个 const 引用,这样如果不需要就可以避免复制:

const std::vector<Directions>& horizontalDirections();

此外,如果您使用的是 C++11,您的实现可以缩写为:

const std::vector<Directions>& horizontalDirections()
{
    static std::vector<Directions> toReturn({Left, Right});
    return toReturn;
}

如果使用 C++11,您可以更进一步,将 horizo​​ntalDirections 声明为全局 const vector 而不是函数:

const std::vector<Directions> horizontalDirections({Left, Right});

关于c++ - 始终返回相同 vector 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31797570/

相关文章:

JavaScript 函数无法处理事件

c++ - 函数指针说明

java - 静态类是单例吗?

c++ - C++中static和static函数的使用错误

c++ - 如何为 C++ 项目编写简单的通用构建脚本?

c++ - 如何计算整数中的零位数?

Swift函数只能调用一次

c++ - 在C++中没有匹配的构造函数来初始化可变参数模板

c++ - 在 C++ 中比较字符串

java - Java中的误解