如何实现支持无限输入元素的C++ Vector?现有代码需改造
支持无限输入的C++ Vector程序修改方案
修改后的完整代码
#include <iostream> #include <cmath> #include <vector> using namespace std; int main(){ vector<int> N; // 不指定初始大小,动态扩容 vector<int> M; int m, n; // 循环读取输入,直到输入结束(如按Ctrl+D,或输入非整数内容) while (cin >> m >> n) { M.push_back(m); N.push_back(n); } for(int i=0; i<M.size(); i++){ if(N[i]<=0 || M[i]<=0){ break; } else{ int Min = min(N[i], M[i]); int l = Min; int Max = max(N[i], M[i]); cout << Min << " " ; do{ cout << ++Min << " "; // 打印M和N之间的所有数 l += Min; }while(Min != Max); cout << "sum =" << l << endl; } } return 0; }
关键修改说明
- Vector初始化:移除原代码中固定大小的初始化方式,改为空vector,通过
push_back()动态添加元素,实现无限存储能力。 - 输入循环:将固定次数的
for循环替换为while(cin >> m >> n),该循环会持续读取用户输入的整数对,直到输入流结束(Windows下按Ctrl+Z,Linux/macOS下按Ctrl+D,或输入非整数内容触发读取失败)。 - 遍历逻辑:遍历次数从固定的3改为
M.size(),确保能处理所有用户输入的元素对。
输入说明
用户可连续输入多组整数对(每组两个整数,用空格或回车分隔),输入完成后通过结束输入流的方式停止,程序会自动处理所有输入的元素对。
内容的提问来源于stack exchange,提问作者Mohamed Khaled
相关产品推荐
相关产品推荐

