c++ - 打印二维 vector 指针

标签 c++ vector 2d-vector

我像这样创建了一个 2d Vector :

int main(){
   std::vector<std::vector<int> > my_2d_Vector;

   for(int i = 0; i < 10; ++i){
      std::vector<int> internal_vector;
      for(int j; j < 10; ++j){
         internal_vector.push_back(j);
      }
      my_2d_vector.push_back(internal_vector);
   }
 print_2d_vector(&my_2d_vector);
}

我正在尝试像这样将它打印到屏幕上:

void print_2d_vector(std::vector<std::vector<int> > *my_vector){
   for(int i = 0; i < my_vector->size(); ++i){
      for(int j = 0; j < my_vector[i].size(); ++j){
         std::cout << my_vector[i][j];
      }
    std::cout << "/n";
   }
}

这对我来说也很好。 但出于某种原因我不明白,当我尝试编译它时它告诉我这个:error : no match for 'operator<<' (operand types are std::ostream {aka std::basic_ostream<char>} and 'std::vector<int>')

我很困惑,因为我从一个 vector 而不是 vector 本身向它传递一个整数?

最佳答案

这是因为你传递了一个指向函数的指针:

my_vector[i]

实际上访问的不是 vector ,而是指针。然后第二个,[j] 访问实际 vector 。您需要先取消引用指针才能访问 vector 。

为什么你甚至需要一个指针?如果您需要让函数更改 vector ,只需按值传递或使用引用:

void print_2d_vector(std::vector<std::vector<int> >& my_vector){
   for(int i = 0; i < my_vector->size(); ++i){
      for(int j = 0; j < my_vector[i].size(); ++j){
         std::cout << my_vector[i][j];
      }
    std::cout << "/n";
   }
}

和:

print_2d_vector(my_2d_vector);

关于c++ - 打印二维 vector 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833671/

相关文章:

c++ - 什么是 freq_table[field_pm_value] = map<string, int>();方法?

c++ - 在 C++ 中分配给二维 vector

c++根据另外2个点计算2个点

c++ - 在 C++ 中获取 twitter #hashtag 帖子

c++ - set_union() 返回的迭代器

javascript - 使 Qt QWebView Bridge 可从 Webkit IFRAME(本地页面)访问的技巧

matlab - 如何初始化类句柄的向量?

arrays - Julia 矢量 : Excessive Memory Usage

c++ - 如何跟踪 C++ 对象

c++如何按每行列中的值对二维 vector 的行进行排序