相关疑难解决方法(0)

我的函数应该返回一个指向std :: vector的指针,还是对std :: vector的引用?

我有一个std::map<int, std::vector<SomeStruct>>,
并提供一个查询std::vector<SomeStruct> FindData(int key).

为了防止复制整个数据,我将其修改为std::vector<SomeStruct>& FindData(int key).
但是,没有确定的数据key,所以有时我没有任何回报.
在这种情况下,我声明一个空的文件范围变量std::vector<SomeStruct>并返回它.

但是如果我选择指向vector的指针,std::vector<SomeStruct>* FindData(int key)那么我就可以返回NULL不存在的指针key.

哪一个更好?
我在问题中学到指针std::vector是坏的(或者很奇怪?不确定)(这个指针操作还有其他语法吗?)
我个人也喜欢参考std::vector,所以我可以使用operator[]更简单,但缺点是我必须为它声明一个额外的空变量.

代码示例如下:In SomeClass.h

typedef std::vector<SomeStruct> DataVec;
typedef std::map<int, DataVec> DataMap;
DataMap m_DataMap;
Run Code Online (Sandbox Code Playgroud)

现在在SomeClass.cpp:

情况1:

namespace
{
    DataVec EmptyVector;
}

DataVec& FindDatas(int key)
{
    DataMap::iterator It = m_DataMap.find(key);

    if (It == m_DataMap.end()) return EmptyVec;

    return It->second;
}
Run Code Online (Sandbox Code Playgroud)

案例2:

DataVec* FindDatas(int …
Run Code Online (Sandbox Code Playgroud)

c++ stl stdvector

7
推荐指数
1
解决办法
5555
查看次数

标签 统计

c++ ×1

stdvector ×1

stl ×1