我目前正在尝试用std :: shared_ptr和std :: weak_ptr替换我的代码的某些部分.在很多部分我都有std ::的std :: weak_ptrs(以前是原始的ptrs),并使用std :: find来查找数组中的某个指针.这不适用于弱指针,因为它们由于各种原因不实现==运算符.我必须坚持使用std :: weak_ptr来避免循环依赖.我有什么选择,我应该回到使用原始指针而不是弱指针?
例
//_window is a shared_ptr that I want to find in a vector of weak_ptrs
WindowWeakPtrArray::iterator it = std::find(m_windows.begin(), m_windows.end(), _window);
谢谢
解决方法:
在不考虑设计的情况下,您可以使用std :: find_if和自定义比较器来验证weak_ptr是否有效,然后比较内部指针(如果是).
标签:c,c11,stdvector 来源: https://codeday.me/bug/20190723/1513438.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。