哪些STL容器需要使用CAdapt?

时间:2009-12-15 12:10:31

标签: c++ visual-c++ stl containers

Microsoft提供了CAdapt类,以便在STL容器中使用覆盖运算符(operator&)地址的类。 MSDN对此使用CAdapt

进行了说明
  

通常,当您要在STL容器中存储CAdaptCComBSTRCComPtrCComQIPtr个对象时,您将使用_com_ptr_t list

关于我的问题:

应使用CAdapt的STL容器的完整列表是什么?

如果容器包含键/值对(例如map),请指定密钥或值是否需要CAdapt

2 个答案:

答案 0 :(得分:5)

  

应该使用CAdapt的STL容器的完整列表是什么?

无。实现应该假设运营商&amp;重载,并使用正确的表达式&reinterpret_cast<char&>(obj)

现在,还有一个问题是你没有问:

  

我的VC ++ STL实现不同意。它确实提供了CAdapt作为解决方法。应该使用CAdapt的容器的完整列表是什么?

我的头脑,我今天vector<T>(将它们存储为T[],因此合理地需要对它们进行算术运算)和deque(将它们存储为多个较小的T[] s同样相同理)。 list,map,set,multiset和multimap都在节点上工作,因此它们自己已经包装了每个对象。

答案 1 :(得分:2)

documentation的另一件事:

适配器类CAdapt很有用,因为许多容器类(例如STL容器类)希望能够使用address.strong文本获取其包含对象的地址

我认为您不会找到具有此要求的容器列表。这听起来像是依赖于我的实现。