<分区>
在我的应用程序结构中,一个对象具有一个 vector 是另一个 vector 的子集是有意义的。我的意思是较小的存储包含在较大的存储中。
这在 C++ 中可行吗?我保证永远不会调整这两个 vector 的大小,而且我可能会做到这一点,以便子 vector 在包含它的 vector 之前被破坏。
起初我认为从迭代器创建一个子 vector 到大 vector 中可以解决问题,但这样会产生一个拷贝。我真的想要一个裸指针的重定向。
<分区>
在我的应用程序结构中,一个对象具有一个 vector 是另一个 vector 的子集是有意义的。我的意思是较小的存储包含在较大的存储中。
这在 C++ 中可行吗?我保证永远不会调整这两个 vector 的大小,而且我可能会做到这一点,以便子 vector 在包含它的 vector 之前被破坏。
起初我认为从迭代器创建一个子 vector 到大 vector 中可以解决问题,但这样会产生一个拷贝。我真的想要一个裸指针的重定向。
最佳答案
一句话,没有。 std::vector
不会那样做。但是您可以做两件类似的事情:
一个指针 vector (可能是 std::shared_ptr
),这样一个
vector 指向另一个元素。当然,现在你有一个指向对象的指针 vector ,而不是对象,这可能是个问题。一种可能的想法是 std::reference_wrapper
,但它不是很好。
还有 std::span
,它是为这个用例制作的。
关于c++ - 我可以有一个与另一个 vector 共享存储空间的 vector 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56861058/