如何使用 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&lt;vector&lt;int&gt; &gt;** 是指向vector&lt;vector&lt;int&gt; &gt; 的指针。 在foo f(&amp;a); 中,表达式&amp;avector&lt;vector&lt;int&gt; &gt;*(指向int 向量向量的指针) 引用将是vector&lt;vector&lt;int&gt; &gt; &amp;

你会有这样的foo

//     Reference here VVV
foo(vector<vector<int> > &a)

然后像这样简单地调用:

foo f(a);

(没有a的地址)

【讨论】:

以上是关于如何使用 C++ 中的指针通过指针传递多维向量?的主要内容,如果未能解决你的问题,请参考以下文章

将嵌套 C++ 向量作为内置样式的多维数组传递

C++ 指针向量,传递次数过多?

将指针向量传递给c ++中的函数[重复]

用向量 c++ 中的指针成员初始化对象

C++:使用 int 指针指向在函数内部创建的向量

如何序列化谷物上的多维数组,C++ 序列化库