std :: vector of std :: weak_ptr和std :: find

时间:2012-03-22 14:49:46

标签: c++ c++11 stdvector

我目前正在尝试用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); 

由于

1 个答案:

答案 0 :(得分:9)

不考虑设计,可以使用std::find_if和自定义比较器来验证weak_ptr是否有效,然后比较内部指针。