首页 > 解决方案 > 打印向量数组 c++

问题描述

对于一个简单的一维向量,我可以像这样轻松打印出向量的元素。

#include <iostream> 
#include <vector> 
using namespace std; 
  
int main() 
{ 
    vector<double> myvector; 
    for(int i=0; i<10; i++){
      myvector.push_back(i*2.0); 
    }
   
    for (auto it = myvector.begin(); it != myvector.end(); ++it) 
        cout << ' ' << *it; 
} 

同样,现在我想创建一些向量数组,然后想推回向量数组的元素,然后我想打印它们。做法是:

    #include <iostream>
#include <vector>
using namespace std;

int main()
{


vector<double> array[10];

for(int j=1; j<=10; j++){

    for(int i =0; i<=5; i++){
        array[j].push_back(i*j*2);
    }
}

for (int j=1; j<10;j++){
 for (auto it = array[j].begin(); it != array[j].end(); ++it) 
    cout << ' ' << *it; 
 }
}

后一个显示了一些分割错误。你能建议如何正确地做第二个(向量数组)吗?

标签: c++arraysvector

解决方案


您将不得不使用二维数组而不是一维数组。 array[j].push_back(i*j*2)是完全错误的。如果你想使用一维向量,你可以这样做arr[j]=i*j*2,但是由于你想在一个位置推送多个元素,你必须使用二维向量,那么你可以在一个特定的位置推送多个元素,我猜这是你的最终目标。


#include <iostream>
#include <vector>
using namespace std;

int main()
{


vector<vector<double>> array(10);

for(int j=0; j<10; j++){

    for(int i=0; i<=5; i++){
        array[j].push_back(i*j*2);
    }
}

for (int j=0; j<10;j++){
 for (auto it = array[j].begin(); it != array[j].end(); ++it) 
    cout << ' ' << *it; 
 }
}

此外,检查向量大小的预定义方式以及如何使用 2D 向量。


推荐阅读