我正在尝试编写一个将返回 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,您可以更进一步,将 horizontalDirections
声明为全局 const vector
而不是函数:
const std::vector<Directions> horizontalDirections({Left, Right});
关于c++ - 始终返回相同 vector 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31797570/