我可能需要更多地重新考虑我的整体设计,但现在看来,我可能想要做一些如下的事情:
class A;
class B;
std::map<boost::shared_ptr<const A>, B> APtrToBMap;我已经尝试过了,它似乎在一个简单的情况下确实有效(编译器没有抱怨,简单的测试似乎也有效)。但我对这种方法有了新的想法。我怀疑这里面有一些我不知道的陷阱。
那么,上述结论在实际意义上是有效的吗?或者,当我这样做时,有没有什么我没有意识到的缺陷?
发布于 2010-11-10 23:27:54
参考文献是这样说的:
template<class T, class U>
bool operator<(shared_ptr<T> const & a, shared_ptr<U> const & b); // never throws返回:一个未指定的值,使得
没什么。
注意:允许将shared_ptr对象用作关联容器中的键。
发布于 2010-11-11 00:40:06
是的,您可以使用共享指针作为std::map的键,但这肯定是设计失败的标志。它将根据一些随机的存储位置进行排序。
你的问题有点含糊。如果你说你将如何使用这张地图,以及你想要存档什么,你可能会得到更有用的答案。
发布于 2010-11-11 00:24:01
我不是100%熟悉共享指针,但是如果有一种方法可以访问原始指针,你可以使用它作为键(如果你仍然担心某些原因)。
https://stackoverflow.com/questions/4145957
复制相似问题