一维vector输入:
用于读取输入,并存入vector的函数,直接使用这个函数进行读取,则可以通过点回车来结束一个vector的读取
vector<int> readSequence() {
vector<int> seq;
string line;
getline(cin, line); // 读取整行
stringstream ss(line); // 用 stringstream 分割
int num;
while (ss >> num) {
seq.push_back(num); // 存入 vector
}
return seq;
}
示例:读取两个 vector(前序 + 中序)
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
vector<int> readSequence() {
vector<int> seq;
string line;
getline(cin, line); // 读取整行
stringstream ss(line); // 用 stringstream 分割
int num;
while (ss >> num) {
seq.push_back(num); // 存入 vector
}
return seq;
}
int main() {
cout << "请输入前序遍历序列:" << endl;
vector<int> preorder = readSequence();
cout << "请输入中序遍历序列:" << endl;
vector<int> inorder = readSequence();
// 测试输出
cout << "前序遍历序列为:";
for (int val : preorder) cout << val << " ";
cout << endl;
cout << "中序遍历序列为:";
for (int val : inorder) cout << val << " ";
cout << endl;
return 0;
}
二维vector输入:
用于读取输入,并存入vector的函数,直接使用这个函数进行读取,则可以通过点回车来结束一个vector的读取,通过一个空行来结束整个二维vector的输入
vector<vector<string>> readStringMatrix() {
vector<vector<string>> res;
string line;
while (getline(cin, line)) {
if (line.empty()) break; // 空行表示一个矩阵输入的结束
stringstream ss(line);
string word;
vector<string> row;
while (ss >> word) {
row.push_back(word);
}
res.push_back(row);
}
return res;
}
示例:两个二维vector的输入
int main() {
cout << "输入第一个二维vector,空行结束:" << endl;
vector<vector<string>> v1 = readStringMatrix();
cout << "输入第二个二维vector,空行结束:" << endl;
vector<vector<string>> v2 = readStringMatrix();
// 输出测试
cout << "第一个矩阵:" << endl;
for (auto& row : v1) {
for (auto& s : row) cout << s << " ";
cout << endl;
}
cout << "第二个矩阵:" << endl;
for (auto& row : v2) {
for (auto& s : row) cout << s << " ";
cout << endl;
}
return 0;
}