c++ - 返回 vector 内对象的引用

标签 c++ pointers reference

假设我有以下内容:

class Map
{
    std::vector<Continent> continents;

public:

    Map();
    ~Map();
    Continent* getContinent(std::string name);
};

Continent* Map::getContinent(std::string name)
{
    Continent * c = nullptr;
    for (int i = 0; i < continents.size(); i++)
    {
        if (continents[i].getName() == name)
        {
            c = &continents[i];
            break;
        }
    }

    return c;
}

您可以在这里看到 continent 对象存在于名为 continentsvector 中。这是获取对象引用的正确方法,还是有更好的方法? vector 是否存在导致其行为不端的潜在问题?

最佳答案

在一种情况下,可以在 std::vector 中返回一个对象的指针或引用: vector 的内容在您获取指针或引用后不得更改。

当您在启动时或在构造函数中初始化 vector 时,这很容易做到,并且永远不会再次更改它。在 vector 比按值而不是指针返回更动态的情况下,是一种更可靠的方法。

关于c++ - 返回 vector 内对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33578301/

相关文章:

c++ - 如何使用 UTF-8 编码字符/字符串

c - 在 C 函数中初始化结构指针

javascript - 类似于 python.org 的 Javascript 的 "Home"?

C++:类成员引用有效性?

c++ - 混淆 L 值和 R 值括号

c++ - Cmake 在 Mac OSX 上使用框架编译并将 .cpp 文件视为 .m/.mm

c++ - 何时删除 try-catch block 中的指针

python - python 类中使用的 ctypes 指针导致的内存泄漏

c# - 装箱/拆箱,更 retrofit 箱值的引用副本不会反射(reflect)到装箱值

C++:根据参数实例化模板类