最近在做笔试题,相比与leetcode,笔试题都是要自己写输入输出的,每次在这里都浪费了不少时间,这篇文章总结了一下在C++中怎么向数组中输入数据。
1. 先输入数组大小,然后输入数据数据,中间以空格或者'\n'字符隔开
1 /* 2 * 两种输入方式 3 * 3 ↙ 4 * 1 2 3 ↙ 5 * 6 * 3 ↙ 7 * 1 8 * 2 9 * 3 10 * ↙ 11 */ 12 vector<int> inputArray(){ 13 int size = 0; 14 cin >> size; 15 vector<int> inputs; 16 for(int i=0;i<size;i++){ 17 int tmp; 18 cin >> tmp; 19 inputs.push_back(tmp); 20 } 21 return inputs; 22 }
2、输入以','字符分割的数据,思路将输入保存为字符串,然后转换为具体的数据
1 // 1,2,3,4,5 ↙ 2 vector<int> inputArray2(){ 3 string inputs; 4 cin >> inputs; 5 //split 6 vector<string> splits; 7 int start = 0; 8 for(size_t i=0;i<inputs.size();i++){ 9 if(inputs[i] == ','){ 10 splits.push_back(inputs.substr(start,i-start)); 11 start = i+1; 12 } 13 } 14 if(start != (int)inputs.size()){ 15 splits.push_back(inputs.substr(start)); 16 } 17 vector<int> res; 18 for(string s:splits){ 19 res.push_back(std::stoi(s)); 20 } 21 return res; 22 }
3.输入无限长度的数据,数据之间用空格分开,回车结束
1 // 输入无限长度的数组 1 2 3 4 5 6 ... 2 vector<int> inputArray3(){ 3 vector<int> inputs; 4 int a; 5 do{ 6 cin >> a; 7 inputs.push_back(a); 8 }while(getchar() != '\n'); 9 return inputs; 10 11 }
4. 和方法1类似,输入二维数组
1 vector<vector<int>> inputMatrix(){ 2 int m,n; 3 cin >> m >> n; 4 vector<vector<int>> matrix(m,vector<int>(n,0)); 5 for(int i=0;i<m;i++){ 6 for(int j=0;j<n;j++){ 7 int a; 8 cin >> a; 9 matrix[i][j] = a; 10 } 11 } 12 return matrix; 13 }