gpt4 book ai didi

c++ - std::weak_ptr 和 std::find 的 std::vector

转载 作者:太空狗 更新时间:2023-10-29 19:59:57 27 4
gpt4 key购买 nike

我目前正在尝试用 std::shared_ptr 和 std::weak_ptr 替换我的部分代码。在许多部分,我有 std::vectors of 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++ - std::weak_ptr 和 std::find 的 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9824664/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com