首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用多维数组存储多个元素,然后检索元素?

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

Stack Overflow用户
提问于 2022-02-28 12:35:12
回答 3查看 106关注 0票数 2

所以我想建立一个小型停车场管理系统。我想要做的是让用户输入他们的车辆号码,并将其存储到一个数组。我还希望其他元素,如签入时间,序列号,车辆类型等,与车辆号码一起存储。

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

如果我说得不够清楚,很抱歉。

EN

回答 3

Stack Overflow用户

发布于 2022-02-28 12:43:10

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

代码语言:javascript
复制
struct Vehicle {
    int id;
    int serial;
    VehicleType type;
};

第二个问题是对象的批准容器是什么。数组通常是很好的,因为您可以很容易地将它附加到其中。那样的话

代码语言:javascript
复制
std::vector<Vehicle> vehicles;

然而,无论何时您想要查找车辆的id,您将需要遍历所有的车辆,以找到匹配的一个。更有效率的是一张地图。有几种变体,但首先,一个普通的变体会很好:

代码语言:javascript
复制
std::map<int, Vehicle> vehicles;

插入示例:

代码语言:javascript
复制
// given int vin, int serial
vehicles[vin] = {vin, serial, VehicleType::Car}

另一种选择是std::unordered_map

您需要熟悉这些容器,以便了解它们的正确使用和优缺点。这里有一个很好的起点:How to choose between map and unordered_map?

票数 5
EN

Stack Overflow用户

发布于 2022-02-28 12:42:56

听起来你在寻找一个类似于地图的东西:https://www.cplusplus.com/reference/map/map/,其中的键是你的车号,映射的值是车辆的详细信息(不管你想在那里添加什么)。

编辑:在你的案例中,作为一个例子

std::map<int, vehicle> vehicleMap;

要正确使用该vehicleMap,您应该

vehicle

  • create类型的
  1. 定义structclass --要使用
  2. 的对象--将所需的详细信息添加到vehiclevehiclevehicle对象到带有vehicleMap.insert(int, vehicle).

的映射

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

票数 3
EN

Stack Overflow用户

发布于 2022-02-28 12:52:46

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

代码语言:javascript
复制
std::map<int, Vehicle> vehicle_data;

..and这里有一个简单的例子:

代码语言:javascript
复制
#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()让迭代器指向带有124的int值的元素,然后打印第二个元素的(Vehicle)名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71295128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档