如何使用 C++ 中的指针通过指针传递多维向量?
Posted
技术标签:
【中文标题】如何使用 C++ 中的指针通过指针传递多维向量?【英文标题】:How to pass by pointer a multidimentional vectors using pointers in C++? 【发布时间】:2020-10-21 06:09:27 【问题描述】:我想使用指针传递打印多维向量a
的值。谁能告诉我我的程序有什么问题?我遇到了很多错误。
#include <iostream>
#include <vector>
using namespace std;
class foo
private:
vector <int> v;
public:
foo(vector<vector <int> >**);
;
foo :: foo(vector<vector<int> >** a)
cout << a[0][0] <<endl;
//cout<<a->size()<<endl;
int main()
vector<vector<int>> a1,2,3,4,5,6,7,8;
foo f(&a);
谢谢!
【问题讨论】:
请显示您遇到的错误。您没有通过引用传递您正在使用指针,因此您需要使用(*a)[0][0]
@AlanBirtles 这是一个愚蠢的错误,抱歉。
您似乎一直在阅读有关数组的内容,并试图将您阅读的内容应用于向量。获取good book。 (而且绝对没有理由在这里使用类。)
@molbdnilo 实际上,这个类结构用于我正在编写的另一个程序中。是的,这里不需要这个类,但我需要在不同的程序中使用这个概念。是的,我正在尝试在向量中复制多维数组。
【参考方案1】:
您在这里混淆了一些事情:
vector<vector<int> >**
是指向vector<vector<int> >
的指针。
在foo f(&a);
中,表达式&a
是vector<vector<int> >*
(指向int 向量向量的指针)
引用将是vector<vector<int> > &
。
你会有这样的foo
:
// Reference here VVV
foo(vector<vector<int> > &a)
然后像这样简单地调用:
foo f(a);
(没有取a
的地址)
【讨论】:
以上是关于如何使用 C++ 中的指针通过指针传递多维向量?的主要内容,如果未能解决你的问题,请参考以下文章