gpt4 book ai didi

C++ STL 映射 : issues with BSTR

转载 作者:太空狗 更新时间:2023-10-29 20:15:17 25 4
gpt4 key购买 nike

我在代码中使用 map <BSTR,struct> bstr 是键并构造值。

这行得通吗,还是我必须重新定义一些东西?

我没有发现任何编译问题,而且我也可以添加元素。然而,map.find()不起作用。即使元素存在,它总是返回 map.end() (未找到元素)。

我做了如下临时解决方法 - 从 map.begin() 开始循环至 map.end()并为每个元素执行 lstrcmpW。这似乎可行,但不要认为这效率太高。

有什么可能出错的建议/提示吗?可以用BSTR吗作为 map 的关键?我知道 map 不支持一些非本地数据类型——结构或类……你需要定义一个 <运营商。

最佳答案

使用 ATL 的 CComBSTR作为 key 类型而不是 BSTR。 CComBSTR 重载 operator<进行实际的字符串比较,而不是像您当前所做的那样进行指针(地址)比较。

CComBSTR 还简化了生命周期管理。使用 BSTR 作为键类型,您必须确保 BSTR 的生命周期超过 map 的生命周期(实际上,它们必须在 map 被破坏之前立即释放)。 CComBSTR 遵循 RAII 原则,因此您无需进行任何手动解除分配。

关于C++ STL 映射 : issues with BSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13630494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com