我可以有一个与另一个载体共享存储空间的载体吗?

时间:2019-07-02 23:12:03

标签: c++ stdvector

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

这在C ++中可行吗?我保证不会对这两个向量进行大小调整,并且我可能可以做到这一点,以使子向量在包含该向量之前被破坏。

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

1 个答案:

答案 0 :(得分:4)

总之,不。 std::vector只是不这样做。但是您可以执行两种类似的操作:

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

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