c++ - 我可以有一个与另一个向量共享存储的向量吗?
问题描述
在我的应用程序的结构中,一个对象的向量是另一个向量的子集是有意义的。我的意思是,较小的存储包含在较大的存储中。
这在 C++ 中可能吗?我保证这两个向量都不会被调整大小,我可能会这样做,以便子向量在包含的向量之前被破坏。
起初我认为从迭代器创建一个子向量到大向量中就可以了,但这会产生一个副本。我真的想要一个裸指针的重定向。
解决方案
一句话,没有。std::vector
只是不这样做。但是你可以做两件类似的事情:
一个指针向量(可能是
std::shared_ptr
),使得一个向量指向另一个向量的元素。当然,现在你有一个指向对象的指针向量,而不是对象,这可能是个问题。一种可能的想法是std::reference_wrapper
,但它不是很好。还有
std::span
,这是为这个用例制作的。
推荐阅读
- quarkus - 在 quarkus 中异步调用 @Transactional 方法
- terraform - Terraform 导入:无效索引
- python - Linkedin API 搜索器 adCreatives
- puppeteer - 如何使用 Puppeteer 截取公司内部网站的屏幕截图?我使用 vpn 访问该站点
- reactjs - .then 在 promise 返回之前运行,为什么?
- javascript - Uncaught ReferenceError: $ is not defined 问题
- flutter - Flutter-如何将滚动控制器控制器传递给flutter中的其他小部件以隐藏底部导航栏
- c# - 有没有办法查看 SQLiteAsyncConnection 类创建的数据库
- websocket - 在 C/C++/Java 中扩展 Mosquitto 代理
- angular - 如何读取角度 TS 代码中绑定的值?