有没有办法访问/取消引用并查找存储在双指针向量中的元素的值? [关闭]
Posted
技术标签:
【中文标题】有没有办法访问/取消引用并查找存储在双指针向量中的元素的值? [关闭]【英文标题】:Is there a way to access/dereference and find value of element stored in a vector of double pointers? [closed] 【发布时间】:2019-05-21 07:33:45 【问题描述】:基本上我有两个向量,一个类型(称为外部)包含指向另一个向量的元素,该向量的元素是类型(以下称为内部),并且存储为内部元素的指针指向 int 类型数组。
我想访问存储的数组的元素。我该怎么办?
【问题讨论】:
请不要描述代码,贴出来。显示相关向量的定义,以及您想要访问的内容。 欢迎来到 SO!请发布代码 sn-p 显示您尝试访问容器元素的尝试。这将帮助我们帮助您。 我已经回滚了另一个用户所做的编辑,因为我觉得它通过添加原始信息中没有的信息改变了问题的含义。恕我直言,这也没有什么意义。 首先,在 C++ 程序中使用双指针向量是非常可疑的。你的整体方法看起来是错误的。但是无论如何,如果没有任何代码,您的问题就太不清楚了。请edit您的问题并添加一些相关代码。阅读:How to Ask 指向向量元素的指针非常脆弱——如果底层存储被重新分配,它们就会变得无效。考虑存储索引而不是指针。 【参考方案1】:const int num = 2;
int arr[num];
arr[0] = 123;
arr[1] = 456;
vector<int*> inner;
vector<int**> outer;
inner.reserve(num);
outer.reserve(num);
for(int i = 0; i < num; ++i)
inner.push_back(&arr[i]);
outer.push_back(&inner[i]);
cout << "before:";
for (int i : arr)
cout << i << " ";
cout << endl;
for(int i = 0; i < num; ++i)
**(outer[i]) *= 2;
cout << "after:";
for (int i : arr)
cout << i << " ";
cout << endl;
输出:
之前:123 456 之后:246 912Live Demo
【讨论】:
以上是关于有没有办法访问/取消引用并查找存储在双指针向量中的元素的值? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章