【发布时间】:2016-09-11 18:12:34
【问题描述】:
我正在编写一个程序,其中一个类的数据成员很大 std::vector(大约 100k - 1M 项)。其他类需要能够访问此向量。目前我有一个返回向量的标准访问器函数,但这会返回我相信的向量的副本。我认为只返回一个迭代器或指向第一个元素的指针会更节省内存和时间。但是,如果我这样做,那么如何使用此指针来运行 vector 并知道何时停止(即向量在哪里结束)?
我的代码如下所示:
class MyClass
{
private:
std::vector<MyObj> objects_;
//...
public:
std::vector<MyObj> getObjects() { return objects_; }
//...
}
当我想遍历(模拟的)连接向量时,这个问题以另一种形式出现。如果我有MyClass 的vector,我希望能够遍历所有包含的object_ 向量。我从this answer 知道 boost::join 符合我的想法,但我认为我需要返回副本才能使其正常工作。我可以返回一个指向向量的指针,并且仍然保留对它和其他连续迭代的能力吗?
【问题讨论】: