c ++)将一维数组放入二维数组时出现错误

c++) i have error when putting 1D array in 2D array

有什么问题

#include <iostream>
using namespace std;
int main() {
    int M; //height
    int N; //length
    cin >> M;
    cin >> N;
    int list[M][N], smaller[N];
    string smaller_str;
    for (int i = 0;i < M; ++i){
        getline(cin, smaller_str);
        for (int j = 0; j < N; i = i++) {
            cin >> smaller_str[j];
        }
        list[i] = smaller;
    }
}

我想将“更小”的一维数组放入二维数组列表 但是我确实在“list[i] = smaller;”中遇到了错误。部分 我需要帮助

您不能将另一个数组分配给一个数组,您可以做的是复制/移动它的内容。为此,请使用 std::copy

...
int list[M][N], smaller[N];
string smaller_str;
for (int i = 0; i < M; ++i) {
    getline(cin, smaller_str);
    for (int j = 0; j < N; i = i++) {
        cin >> smaller_str[j];
    }

    std::copy(smaller, smaller + N, reinterpret_cast<int*>(&list[i]));
}

注意:如果您想移动内容而不是复制内容,请将 std::copy 替换为 std::move

除非您想检查错误,否则在这种情况下您不需要使用 getline。只需通过 >> 运算符读取每个元素。

另请注意,像 int list[M][N]; 这样的可变长度数组不在标准 C++ 中。你应该使用 std::vector 而不是那个。

还有一点就是内循环中的i = i++是错误的。应该是 ++j.

#include <iostream>
#include <vector>
using namespace std;
int main() {
    int M; //height
    int N; //length
    cin >> M;
    cin >> N;
    //int list[M][N];
    std::vector<std::vector<int> > list(M, std::vector<int>(N));
    for (int i = 0;i < M; ++i){
        for (int j = 0; j < N; ++j) {
            cin >> list[i][j];
        }
    }
}