c++ - C ++存储容器元素的指针
问题描述
在我的应用程序中,我有一个std::list<TreeNode>
是我的树节点的所有者。现在我希望能够访问 TreeNode 内的左右邻居,那么我应该使用哪个智能指针将邻居存储在 TreeNode 内?唯一适合这种情况的指针是原始指针,因为 TreeNode 不是其邻居的所有者,所以我几乎看不到智能指针在这里有什么用处。
此外,必须将 TreeNode 存储在其他容器中以便快速访问(以获得最高优先级的容器),所以我不能只存储 unique_ptr 的邻居,因为我还需要将它们存储在快速容器中(priority_queue)
解决方案
那么我应该使用哪个(智能)指针将邻居存储在 TreeNode 中?
您应该使用合适的指针类型。
唯一适用于此的指针是原始指针
好吧,你去。如果原始指针是唯一合适的指针,那么使用不合适的智能指针将适得其反。
如果您无法为节点建立正确的生命周期,那么可以考虑共享所有权。一个简单的选择是始终使用共享指针。如果您希望将所有权主要保留在列表中,那么您可以在其他地方使用弱指针。
但我想使用智能指针,因为它们是现代 C++ 的必经之路
您误解了智能指针的意义。
推荐阅读
- powershell - Exchange Online - Powershell cmdlet“New-MailboxImportRequest”不接受“FilePath”参数
- c++ - 如何在 Qt 中绘制能够改变颜色的线条?
- python - Pandas Dataframe 中的列无法识别或在索引中
- php - 使用 php 从 mysql 表中获取数据并做出本机反应
- python - bs4 中 .find() 的正确语法是什么?
- crash - Android Studio 在第一次运行时崩溃了
- jenkins - 在 Jenkins 中获取批处理文件的返回
- javascript - React:有条件地显示和隐藏 CSS 选择器
- javascript - 我需要帮助从串行 RS485 设备读取二进制/十六进制字符串响应
- sandbox - DLL 注入可以用来突破沙箱吗?