我想共享大小为k
的 double 组a
的内容与一个或多个STL vector v1
、v2
...vn
。
我希望从这个共享存储中获得的效果是,如果底层数组被修改,则可以从与该数组共享其内容的所有 vector 中观察到更改。
我可以通过将 vector v1
...vn
定义为指针 vector 来做到这一点
vector<double*> v1;
并将指向 a + k
的指针复制到此 vector 中。但是,我不喜欢这个解决方案。我希望 vector 是 double vector 。
鉴于您可以从 vector 中提取底层指针,我假设可以用数组初始化 vector ,从而共享内容。非常感谢有关如何执行此操作的帮助。
最佳答案
Given that you can extract the underlying pointer from a vector I am assuming one could initialize a vector with an array in such a way that the contents are shared.
不,你不能这样做。标准库容器始终管理自己的内存。
您最好的选择是创建 std::vector<double>
然后将其用作需要的数组(通过 &v[0]
,假设 vector 非空)。
如果您只想拥有容器接口(interface),请考虑使用 std::array
(或 boost::array
或 std::tr1::array
)或编写自己的容器接口(interface)来封装数组。
关于c++ - 与 STL vector 共享数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409687/