如何遍历输出vector里面保存的记录
时间: 2024-03-03 22:52:52 浏览: 16
要遍历输出vector里面保存的记录,可以使用C++11的范围for循环,代码如下:
```
for (const auto& record : payment_records_) {
std::cout << "缴费日期:" << record.GetDate() << ",缴费金额:" << record.GetAmount() << std::endl;
}
```
上述代码中,`payment_records_`是保存缴费记录的vector容器,`record`是容器中每个元素的引用,`GetDate()`和`GetAmount()`是获取缴费日期和缴费金额的方法,可以根据实际情况进行修改。
遍历输出每个缴费记录的日期和金额,就可以查看用户的缴费记录了。
相关问题
有向图输出出度为0顶点
可以使用DFS或BFS遍历有向图,当遍历到一个顶点时,检查它的出度是否为0,如果是,则将该顶点输出。以下是DFS的实现示例:
```
void dfs(int v, vector<int> adj[], vector<bool>& visited, vector<int>& outdegree_zero) {
visited[v] = true;
if (adj[v].size() == 0) { // 检查出度是否为0
outdegree_zero.push_back(v);
}
for (int u : adj[v]) {
if (!visited[u]) {
dfs(u, adj, visited, outdegree_zero);
}
}
}
vector<int> findOutdegreeZeroVertices(int n, vector<pair<int, int>>& edges) {
vector<int> adj[n];
for (auto e : edges) {
int u = e.first, v = e.second;
adj[u].push_back(v);
}
vector<bool> visited(n, false);
vector<int> outdegree_zero;
for (int i = 0; i < n; i++) {
if (!visited[i]) {
dfs(i, adj, visited, outdegree_zero);
}
}
return outdegree_zero;
}
```
其中,`n`是顶点个数,`edges`是边的集合,每条边表示为一对`(u, v)`,表示从顶点`u`到顶点`v`有一条有向边。`adj`是邻接表,`adj[u]`表示顶点`u`的所有出边所连接的顶点。`visited`记录每个顶点是否已被访问过,`outdegree_zero`保存所有出度为0的顶点。最后调用`findOutdegreeZeroVertices(n, edges)`即可输出所有出度为0的顶点。
写一个c++的学生成绩管理系统,可以添加、显示、查找、删除、保存、导出学生成绩记录
好的,我可以为您提供一个简单的 C++ 学生成绩管理系统,包含添加、显示、查找、删除、保存、导出学生成绩记录的功能。以下是代码实现和注释:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
// 学生结构体
struct Student {
string name; // 姓名
int age; // 年龄
string id; // 学号
int score; // 成绩
// 重载运算符 < ,用于排序
bool operator < (const Student& s) const {
return id < s.id;
}
};
vector<Student> students; // 学生集合
// 添加学生
void addStudent() {
Student s;
cout << "请输入学生姓名:";
cin >> s.name;
cout << "请输入学生年龄:";
cin >> s.age;
cout << "请输入学生学号:";
cin >> s.id;
cout << "请输入学生成绩:";
cin >> s.score;
students.push_back(s);
cout << "添加成功!" << endl;
}
// 显示所有学生
void showStudents() {
cout << "姓名\t年龄\t学号\t成绩" << endl;
for (const auto& s : students) {
cout << s.name << "\t" << s.age << "\t" << s.id << "\t" << s.score << endl;
}
}
// 查找学生
void searchStudent() {
string id;
cout << "请输入要查找的学生学号:";
cin >> id;
auto it = find_if(students.begin(), students.end(), [id](const Student& s) {
return s.id == id;
});
if (it != students.end()) {
cout << "姓名\t年龄\t学号\t成绩" << endl;
cout << it->name << "\t" << it->age << "\t" << it->id << "\t" << it->score << endl;
} else {
cout << "未找到该学生!" << endl;
}
}
// 删除学生
void deleteStudent() {
string id;
cout << "请输入要删除的学生学号:";
cin >> id;
auto it = find_if(students.begin(), students.end(), [id](const Student& s) {
return s.id == id;
});
if (it != students.end()) {
students.erase(it);
cout << "删除成功!" << endl;
} else {
cout << "未找到该学生!" << endl;
}
}
// 保存学生成绩记录到文件
void saveToFile() {
ofstream outfile("students.txt");
if (outfile.is_open()) {
for (const auto& s : students) {
outfile << s.name << " " << s.age << " " << s.id << " " << s.score << endl;
}
outfile.close();
cout << "保存成功!" << endl;
} else {
cout << "保存失败!" << endl;
}
}
// 从文件中导入学生成绩记录
void loadFromFile() {
ifstream infile("students.txt");
if (infile.is_open()) {
students.clear(); // 清空原有记录
while (!infile.eof()) {
Student s;
infile >> s.name >> s.age >> s.id >> s.score;
students.push_back(s);
}
infile.close();
cout << "导入成功!" << endl;
} else {
cout << "未找到记录文件!" << endl;
}
}
// 导出学生成绩记录到文件
void exportToFile() {
ofstream outfile("students.csv");
if (outfile.is_open()) {
outfile << "姓名,年龄,学号,成绩" << endl;
for (const auto& s : students) {
outfile << s.name << "," << s.age << "," << s.id << "," << s.score << endl;
}
outfile.close();
cout << "导出成功!" << endl;
} else {
cout << "导出失败!" << endl;
}
}
int main() {
int choice;
do {
cout << "1. 添加学生" << endl;
cout << "2. 显示所有学生" << endl;
cout << "3. 查找学生" << endl;
cout << "4. 删除学生" << endl;
cout << "5. 保存学生成绩记录到文件" << endl;
cout << "6. 从文件中导入学生成绩记录" << endl;
cout << "7. 导出学生成绩记录到文件" << endl;
cout << "0. 退出" << endl;
cout << "请选择操作:";
cin >> choice;
switch (choice) {
case 1:
addStudent();
break;
case 2:
showStudents();
break;
case 3:
searchStudent();
break;
case 4:
deleteStudent();
break;
case 5:
saveToFile();
break;
case 6:
loadFromFile();
break;
case 7:
exportToFile();
break;
case 0:
cout << "谢谢使用!" << endl;
break;
default:
cout << "无效的选择!" << endl;
break;
}
} while (choice != 0);
return 0;
}
```
该程序将学生记录保存到一个 vector 容器中,支持添加、显示、查找、删除、保存、导入、导出操作。其中:
- 添加学生:输入学生姓名、年龄、学号、成绩,将学生记录添加到 vector 容器中。
- 显示所有学生:遍历 vector 容器,输出每个学生的姓名、年龄、学号、成绩。
- 查找学生:输入要查找的学号,使用 `find_if()` 算法在 vector 容器中查找该学生,找到后输出该学生的姓名、年龄、学号、成绩。
- 删除学生:输入要删除的学号,使用 `find_if()` 算法在 vector 容器中查找该学生,找到后从 vector 容器中删除该学生记录。
- 保存学生成绩记录到文件:将 vector 容器中的学生记录保存到文件中,每行记录包含学生姓名、年龄、学号、成绩,用空格分隔。
- 从文件中导入学生成绩记录:从文件中读取学生记录,每行记录包含学生姓名、年龄、学号、成绩,用空格分隔,添加到 vector 容器中。
- 导出学生成绩记录到文件:将 vector 容器中的学生记录导出到 CSV 格式的文件中,每行记录包含学生姓名、年龄、学号、成绩,用逗号分隔。
该程序基本实现了学生成绩管理系统的常用功能,您可以根据需要进行修改和扩展。