我有一个数据结构来存储……好吧,数据。现在,我需要以稍微不同的方式访问各种数据,因此我实际上是在构建内存中索引。但我想知道:索引应该保存指针还是拷贝?
详细来说,假设我有
class Widget
{
// Ways to access the list of gears...
private:
std::list<Gears> m_gears;
};
现在,我有两个 Widget
,并且在这两个 Gear
之间存在一个映射。目前,这是
boost::unordered_map<Gear, Gear>
但是 Gear
是一个相当大的类,我觉得制作这么多拷贝是糟糕的设计。我可以存储一个指针,但映射仅在相应 Widget
的生命周期内有效,并且您开始获取 ->
s...(如果那std::list
曾经更改为 std::vector
,它变得更复杂...)
关于拷贝,实际上情况稍差:有两个 boost::unordered_map
,每个方向一个。因此,对于每个 Gear
,我最多制作 2 个拷贝。
或者,我可以将索引放在 Widget
类中,但我觉得这违反了 Widget
类的职责。
最佳答案
您可以试试 Boost 指针容器库:http://www.boost.org/doc/libs/1_43_0/libs/ptr_container/doc/ptr_container.html
我认为它正好解决了您面临的问题。
关于c++ - 建立索引 : Copies or pointers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3355826/