我目前正在尝试用std::shared_ptr和std::weak_ptr替换代码的某些部分。在许多部分中,我都有std::weak_ptrs的std::向量(以前是原始的ptr),并使用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);
谢谢
发布于 2012-03-22 14:54:26
在不考虑设计的情况下,您可以使用std::find_if
和一个自定义比较器来验证weak_ptr
是否有效,然后比较内部指针是否有效。
https://stackoverflow.com/questions/9824664
复制相似问题