首页 > 解决方案 > 我可以有一个与另一个向量共享存储的向量吗?

问题描述

在我的应用程序的结构中,一个对象的向量是另一个向量的子集是有意义的。我的意思是,较小的存储包含在较大的存储中。

这在 C++ 中可能吗?我保证这两个向量都不会被调整大小,我可能会这样做,以便子向量在包含的向量之前被破坏。

起初我认为从迭代器创建一个子向量到大向量中就可以了,但这会产生一个副本。我真的想要一个裸指针的重定向。

标签: c++stdvector

解决方案


一句话,没有。std::vector只是不这样做。但是你可以做两件类似的事情:

  1. 一个指针向量(可能是std::shared_ptr),使得一个向量指向另一个向量的元素。当然,现在你有一个指向对象的指针向量,而不是对象,这可能是个问题。一种可能的想法是std::reference_wrapper,但它不是很好。

  2. 还有std::span,这是为这个用例制作的。


推荐阅读