首页 > 解决方案 > 向量数组输入问题,可能是索引问题

问题描述

我无法理解为什么我的向量数组没有输入一行。...

#include<bits/stdc++.h>
using namespace std;
int main () {
    int r;
    cin>>r;
    vector <int> v[r];
    for (int i=0; i<r; i++) {
        for (int j=0; j<i; j++) {
        int x;
        cin>>x;
        v[i].push_back(x);
        }
    }
    for (int i=0; i<r; i++) {
        for (size_t j=0; j<v[i].size(); j++){
            cout<<v[i][j];
        }    
        cout<<endl;
    }

}

... 有输入 ...

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

...它输出...

7
38
810
2744

...在输出的开头有一个空行。

标签: c++vector

解决方案


您在输出的开头看到空行,因为v[0]是空的。您可以通过以下方式修复它:

#include<bits/stdc++.h>
using namespace std;
int main () {
    int r;
    cin>>r;
    // vector <int> v[r];
    //                ^
    // This is variable length array which is not really legal in C++. Use:
    vector<vector<int>> v;
    v.resize(r);
    for (int i=0; i<r; i++) {
        for (int j=0; j<=i; j++) {
        //             ^^
        // This loop had 0 iterations when i == 0, 1 when i == 1, ..., 4 when i == 4.
        // So you need to do one more iteration each time.
            int x;
            cin>>x;
            v[i].push_back(x);
        }
    }
    for (int i=0; i<r; i++) {
        for (size_t j=0; j<v[i].size(); j++){
            cout<<v[i][j];
        }    
        cout<<endl;
    }

}

还:

#include <iostream>
#include <vector>

推荐阅读