如何使用多维数组存储多个元素,然后检索元素



所以我正在尝试创建一个小型停车场管理系统。我想做的是让用户输入他们的车辆编号,它会将其存储到一个数组中。我还希望其他元素,如登记时间、序列号、车辆类型等,与车辆编号一起存储。

我想知道如何使用多维数组将我提到的所有内容存储到车辆编号中,这样当用户再次键入他们的车辆编号时,它将显示其中存储的所有其他元素。

对不起,我说得不够清楚。

第一步是使用结构来组织数据,例如:

struct Vehicle {
int id;
int serial;
VehicleType type;
};

第二个问题是什么是适合放置对象的容器。一个数组通常很好,因为你可以很容易地附加到它上面

std::vector<Vehicle> vehicles;

然而,每当你想根据车辆id查找车辆时,你都需要浏览所有车辆才能找到匹配的车辆。地图会更有效。有几种变体,但对于初学者来说,常规的变体就可以了:

std::map<int, Vehicle> vehicles;

插入示例:

// given int vin, int serial
vehicles[vin] = {vin, serial, VehicleType::Car}

一种替代方案是std::unordered_map

您需要熟悉这些容器,以便了解它们的正确使用和优缺点。这里有一个很好的入门:如何在map和undreded_map之间进行选择?

听起来你在寻找类似地图的东西:https://www.cplusplus.com/reference/map/map/其中密钥是您的车辆编号,映射值是车辆的详细信息(无论您想在其中添加什么(。

编辑:以为例

std::map<int, vehicle> vehicleMap;

要正确使用vehicleMap,您应该

  1. 定义类型为vehiclestructclass
  2. 创建要使用的vehicle类型的对象
  3. 将所需的详细信息添加到vehicle对象
  4. vehicle对象插入到具有vehicleMap.insert(int, vehicle)的映射中

然后您可以使用vehicleMap.find(<int>);检索车辆的所有详细信息。:(

您可以始终为此目的使用地图:

std::map<int, Vehicle> vehicle_data;

这里有一个简单的例子:

#include <iostream>
#include <string>
#include <map>
class Vehicle
{
public:
std::string name;
Vehicle(std::string _name) : name(_name) { }
};
int main()
{
std::map<int, Vehicle> vehicle_data;
vehicle_data.insert({ 1, Vehicle("vehicle name 1")});
vehicle_data.insert({ 3, Vehicle("vehicle name 3") });
vehicle_data.insert({ 2, Vehicle("vehicle name 2") });
auto it1 = vehicle_data.find({ 1 });
auto it2 = vehicle_data.find({ 2 });
auto it3 = vehicle_data.find({ 4 });
if (it1 != vehicle_data.end()) std::cout << it1->second.name << std::endl;
if (it2 != vehicle_data.end()) std::cout << it2->second.name << std::endl;
if (it3 != vehicle_data.end()) std::cout << it3->second.name << std::endl;
}

在上面的代码中,我在vehicle_data中插入了3个车辆,然后我使用find()来获得指向int值为124的元素的迭代器,然后打印第二个元素(车辆(的名称。

最新更新