在我的应用程序的结构中,一个对象拥有一个向量是另一个向量的子集是有意义的。我的意思是说,较小的存储包含在较大的存储中。
这在C ++中可行吗?我保证不会对这两个向量进行大小调整,并且我可能可以做到这一点,以使子向量在包含该向量之前被破坏。
起初,我认为从迭代器到大向量创建子向量可以解决问题,但这会产生一个副本。我真的想要重定向裸指针。
答案 0 :(得分:4)
总之,不。 std::vector
只是不这样做。但是您可以执行两种类似的操作:
指针的向量(也许是std::shared_ptr
),这样一个
向量指向另一个元素。当然,现在您有了指向对象而不是对象的指针向量,这可能是一个问题。一种可能的想法是std::reference_wrapper
,但这不是很好。
还有一个std::span
,是为此用例制作的。