C++ c++;)将一维数组放入二维数组时出错
有什么问题C++ c++;)将一维数组放入二维数组时出错,c++,arrays,clion,C++,Arrays,Clion,有什么问题 #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){ getli
#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;
}
}
#包括
使用名称空间std;
int main(){
int M;//高度
int N;//长度
cin>>M;
cin>>N;
整数列表[M][N],更小[N];
字符串较小的_str;
对于(int i=0;i>较小的_str[j];
}
列表[i]=较小;
}
}
我想把一维数组“更小”放到二维数组列表中
但是,我确实在“列表[i]=较小”部分中遇到错误
我需要帮助伙计们你不能将另一个数组分配给一个数组,你能做的就是复制/移动它的内容。为此,请使用
std::copy
。。。
整数列表[M][N],更小[N];
字符串较小的_str;
对于(int i=0;i>较小的_str[j];
}
标准::复制(更小、更小+N、重新解释和列表[i]);
}
注意:如果您想移动内容而不是复制,请将
std::copy
与std::move
交换,除非您想检查错误,否则在这种情况下不需要使用getline
。只需通过>
操作符读取每个元素
还要注意,可变长度数组,如intlist[M][N]代码>不是标准C++。你应该用它来代替那个
另一点是内部循环中的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];
}
}
}
#包括
#包括
使用名称空间std;
int main(){
int M;//高度
int N;//长度
cin>>M;
cin>>N;
//整数列表[M][N];
std::vector list(M,std::vector(N));
对于(int i=0;i>列表[i][j];
}
}
}
您会遇到什么错误?您无法将内容分配给数组(而不是数组的元素)。你想做什么?也要小心:int list[M][N],更小[N];//这是无效的C++,m和n必须是常量。您需要使用“new”来分配arrays@SvenNilsson使用更好。