加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C stl map:与BSTR有关的问题

发布时间:2020-12-16 09:40:53 所属栏目:百科 来源:网络整理
导读:我在我的代码中使用了一个地图 BSTR,struct bstr是关键和结构的价值. 这项工作还是我必须重新定义一些东西? 我看到没有编译问题,我也可以添加元素.但是,map.find()不起作用.即使元素存在,它总是返回map.end()(未找到元素). 我做了一个临时的解决方法如下 –
我在我的代码中使用了一个地图< BSTR,struct> bstr是关键和结构的价值.

这项工作还是我必须重新定义一些东西?

我看到没有编译问题,我也可以添加元素.但是,map.find()不起作用.即使元素存在,它总是返回map.end()(未找到元素).

我做了一个临时的解决方法如下 – 从map.begin()循环到map.end()并为每个元素执行lstrcmpW.这似乎有效,但不要认为这太有效了.

什么可能是错的任何建议/提示?可以使用BSTR作为地图的关键吗?我知道地图不支持某些非本机数据类型 – 结构或类……你需要定义一个<运算符.

解决方法

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

CComBSTR还简化了生命周期管理.使用BSTR作为密钥类型,您必须确保BSTR比地图的生命周期更长(实际上它们必须在地图被破坏之前被解除分配). CComBSTR遵循RAII原则,因此您无需进行任何手动释放.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读