假设我有以下内容:
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
对象存在于名为 continents
的 vector
中。这是获取对象引用的正确方法,还是有更好的方法? vector 是否存在导致其行为不端的潜在问题?
最佳答案
在一种情况下,可以在 std::vector
中返回一个对象的指针或引用: vector 的内容在您获取指针或引用后不得更改。
当您在启动时或在构造函数中初始化 vector 时,这很容易做到,并且永远不会再次更改它。在 vector 比按值而不是指针返回更动态的情况下,是一种更可靠的方法。
关于c++ - 返回 vector 内对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33578301/