所以我想建立一个小型停车场管理系统。我想要做的是让用户输入他们的车辆号码,并将其存储到一个数组。我还希望其他元素,如签入时间,序列号,车辆类型等,与车辆号码一起存储。
我想知道如何使用多维数组将我提到的所有内容存储到车辆号中,以便当用户再次键入他们的veh号时,它将显示存储在其中的所有其他元素。
如果我说得不够清楚,很抱歉。
发布于 2022-02-28 12:43:10
第一步是使用结构来组织数据,例如:
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。
您需要熟悉这些容器,以便了解它们的正确使用和优缺点。这里有一个很好的起点:How to choose between map and unordered_map?
发布于 2022-02-28 12:42:56
听起来你在寻找一个类似于地图的东西:https://www.cplusplus.com/reference/map/map/,其中的键是你的车号,映射的值是车辆的详细信息(不管你想在那里添加什么)。
编辑:在你的案例中,作为一个例子
std::map<int, vehicle> vehicleMap;
要正确使用该vehicleMap,您应该
vehicle
struct或class --要使用vehicle、vehicle、vehicle对象到带有vehicleMap.insert(int, vehicle).的映射
然后,您可以使用vehicleMap.find(<int>);检索您的车辆的所有细节。:)
发布于 2022-02-28 12:52:46
您可以为此目的始终使用地图:
std::map<int, Vehicle> vehicle_data;..and这里有一个简单的例子:
#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;
}在上面的代码中,我将3台vehicles插入到vehicle_data中,然后使用find()让迭代器指向带有1、2和4的int值的元素,然后打印第二个元素的(Vehicle)名称。
https://stackoverflow.com/questions/71295128
复制相似问题