c++ - 与 STL vector 共享数组

标签 c++ arrays vector stdvector

我想共享大小为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::arraystd::tr1::array )或编写自己的容器接口(interface)来封装数组。

关于c++ - 与 STL vector 共享数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409687/

相关文章:

c++ - Delphi与C++dll通信(参数)

java - 在java中使用数组创建对象

javascript - 数组中的平方值 (JavaScript) 加上浮点错误

c++ - 将字节数组转换为具有字节序问题的指针

Int 对的 Java vector

c++ - 如何模拟原始输入/以正确的方式向应用程序发送 WM_INPUT 消息?

c++ - 如何在 `make uninstall` 期间从 QT5 中的 qmake 运行自定义命令?

c++ - Open_GL 中的透视问题

C++ vector.push_back 在指针定义后崩溃

c++ - C++ 中的 3 维数组