【问题标题】:How to pass by pointer a multidimentional vectors using pointers in C++?如何使用 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>> a{{1,2,3,4},{5,6,7,8}};
    foo f(&a);
    
}

谢谢!

【问题讨论】:

  • 请显示您遇到的错误。您没有通过引用传递您正在使用指针,因此您需要使用(*a)[0][0]
  • @AlanBirtles 这是一个愚蠢的错误,抱歉。
  • 您似乎一直在阅读有关数组的内容,并试图将您阅读的内容应用于向量。获取good book。 (而且绝对没有理由在这里使用类。)
  • @molbdnilo 实际上,这个类结构用于我正在编写的另一个程序中。是的,这里不需要这个类,但我需要在不同的程序中使用这个概念。是的,我正在尝试在向量中复制多维数组。

标签: c++ pointers vector


【解决方案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的地址)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多