This question already has an answer here:
What is a “span” and when should I use one?
(1个答案)
6个月前关闭。
在我的应用程序的结构中,一个对象具有一个向量是另一个向量的子集是有意义的。我的意思是说,较小的存储包含在较大的存储中。
这在C ++中可能吗?我保证这两个向量都不会被调整大小,我可能可以做到这一点,以使子向量在包含一个向量之前被破坏。
最初,我认为创建从迭代器到大向量的子向量可以解决问题,但这会产生一个副本。我真的想要重定向裸指针。
(1个答案)
6个月前关闭。
在我的应用程序的结构中,一个对象具有一个向量是另一个向量的子集是有意义的。我的意思是说,较小的存储包含在较大的存储中。
这在C ++中可能吗?我保证这两个向量都不会被调整大小,我可能可以做到这一点,以使子向量在包含一个向量之前被破坏。
最初,我认为创建从迭代器到大向量的子向量可以解决问题,但这会产生一个副本。我真的想要重定向裸指针。
最佳答案
一言以蔽之。 std::vector
只是不这样做。但是您可以执行两种类似的操作:
指针的向量(可能是std::shared_ptr
),例如
向量指向另一个元素。当然,现在您有了指向对象而不是对象的指针向量,这可能是一个问题。一个可能的想法是std::reference_wrapper
,但这不是很好。
还有std::span
,是为此用例制作的。