用stl的三种容器写一个航空系统
时间: 2024-01-01 15:05:32 浏览: 136
数据结构 航空客运系统 含报告
假设我们需要实现一个航空系统,其中需要记录飞机航班信息以及乘客信息。为此,我们可以使用STL中的三种容器:vector、map和set。
1. 使用vector容器存储航班信息
vector容器是一种动态数组,我们可以使用它来存储航班信息。每个航班都可以用一个结构体来表示,包含航班号、出发地、目的地、出发时间等信息。
```c++
struct Flight {
string flightNumber; //航班号
string departure; //出发地
string destination; //目的地
string departureTime; //出发时间
};
```
我们可以将所有的航班信息存储在一个vector容器中:
```c++
vector<Flight> flights;
```
2. 使用map容器存储乘客信息
map容器是一种关联容器,它可以将一个键映射到一个值。在我们的航空系统中,我们可以使用map容器来存储乘客信息。每个乘客可以用一个结构体来表示,包含姓名、性别、年龄、所订购的航班号等信息。
```c++
struct Passenger {
string name; //姓名
string gender; //性别
int age; //年龄
string flightNumber; //所订购的航班号
};
```
我们可以将所有的乘客信息存储在一个map容器中,以航班号为键,以乘客信息的vector为值:
```c++
map<string, vector<Passenger>> passengers;
```
这样,我们就可以根据航班号来查找该航班的所有乘客。
3. 使用set容器存储航班号
set容器是一种关联容器,它可以存储一组唯一的元素,并按照一定的排序规则进行排列。在我们的航空系统中,我们可以使用set容器来存储所有的航班号。
```c++
set<string> flightNumbers;
```
这样,我们就可以快速地查找所有的航班号,并按照字典序进行排序。
综上所述,我们可以使用vector、map和set三种容器来实现一个简单的航空系统。完整的代码如下所示:
```c++
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
using namespace std;
//航班信息结构体
struct Flight {
string flightNumber; //航班号
string departure; //出发地
string destination; //目的地
string departureTime; //出发时间
};
//乘客信息结构体
struct Passenger {
string name; //姓名
string gender; //性别
int age; //年龄
string flightNumber; //所订购的航班号
};
int main() {
//所有航班信息
vector<Flight> flights = {
{"CA1234", "北京", "上海", "2022-01-01 08:00"},
{"MU5678", "上海", "广州", "2022-01-01 10:00"},
{"CZ9012", "广州", "深圳", "2022-01-01 12:00"},
{"HU3456", "上海", "北京", "2022-01-01 14:00"}
};
//所有乘客信息
map<string, vector<Passenger>> passengers = {
{"CA1234", {{"张三", "男", 30, "CA1234"}, {"李四", "女", 25, "CA1234"}}},
{"MU5678", {{"王五", "男", 40, "MU5678"}, {"赵六", "女", 35, "MU5678"}, {"钱七", "男", 45, "MU5678"}}},
{"CZ9012", {{"周八", "女", 50, "CZ9012"}, {"吴九", "男", 55, "CZ9012"}}},
{"HU3456", {{"郑十", "女", 60, "HU3456"}}}
};
//所有航班号
set<string> flightNumbers;
for (const auto& flight : flights) {
flightNumbers.insert(flight.flightNumber);
}
//输出所有航班号
cout << "所有航班号:" << endl;
for (const auto& flightNumber : flightNumbers) {
cout << flightNumber << endl;
}
//查询某一航班的所有乘客
string flightNumber = "MU5678";
cout << "航班" << flightNumber << "的所有乘客:" << endl;
if (passengers.find(flightNumber) != passengers.end()) {
const auto& passengersOfFlight = passengers[flightNumber];
for (const auto& passenger : passengersOfFlight) {
cout << passenger.name << " " << passenger.gender << " " << passenger.age << endl;
}
}
return 0;
}
```
阅读全文