我可以有一个与另一个向量共享存储的向量

Can I have a vector that shares storage with another vector?

本文关键字:向量 共享 存储 另一个 有一个 我可以      更新时间:2023-10-16

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

在C 中可能可以吗?我保证不会调整两个向量的大小,并且我可以做到这一点,以便在包含一个矢量之前会破坏子向量。

起初,我认为从迭代器中创建一个子向量到大量向量会做到这一点,但这可以副本。我真的想要重定向裸机。

在一个单词中,不。std::vector只是不这样做。但是您可以做两件类似的事情:

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

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