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];
}
}
}
有什么问题
#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];
}
}
}