std::vector of std::weak_ptr and std::find

3

我目前正在尝试使用std::shared_ptr和std::weak_ptr替换我的代码中的某些部分。在许多部分中,我有std::weak_ptrs(以前是裸指针)的std::vectors,并使用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个回答

10

不考虑设计的情况下,您可以使用带有自定义比较器的std::find_if函数,该比较器验证weak_ptr是否有效,然后比较它们的内部指针。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接