c++ - 我可以有一个与另一个 vector 共享存储空间的 vector 吗?

标签 c++ stdvector

<分区>

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

这在 C++ 中可行吗?我保证永远不会调整这两个 vector 的大小,而且我可能会做到这一点,以便子 vector 在包含它的 vector 之前被破坏。

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

最佳答案

一句话,没有。 std::vector 不会那样做。但是您可以做两件类似的事情:

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

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

关于c++ - 我可以有一个与另一个 vector 共享存储空间的 vector 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56861058/

相关文章:

当 push_back 新元素到 std::vector 时,C++ 引用发生变化

c++ - 我如何获取解析的输出并使用它来查找符号

python - 尝试在 Python 3 中使用 C++ 类时出错

C++ std::set 如何处理元素的动态排序

c++ - 如何在 C++ 中为二维 vector 做构造函数?

c++ - vector 类如何接受多个参数并从中创建一个数组?

c++ - 用未知长度的列填充 vector

c++ - 如何以正确的方式在标准算法中使用容器邻居

c++ - 变量名前的"::"c++

c++ - std::dynarray 与 std::vector