我如何将所有矢量元素存储在散列 table C++ 中

How can i store all my vector elements in a hash table c++

我完成的代码##

class vehicle
{
    public:
        vehicle();
        virtual ~vehicle();
        void addVehicle();
        void deleteVehicle();
        void printvehicle(vehicle v);
        void show();
        void showleft();
        void vehcileLoad();

    protected:

    private:
    std::string pltno;
    date dt;
    lime arrive;
    lime departure;
};


int static totalvehicle=0,totalcar=0,totalamt=0,i=0,z=0;
void vehicle::addVehicle()
{

      vehicle *v = new vehicle;
      std::cin.ignore();
      std::cout<<"Enter vehicle number : ";
      std::getline(std::cin, v->pltno);
      std::cout<<"Enter arrival time in hours minutes and seconds : ";
      std::cin>>v->arrive.hh>>v->arrive.col1>>v->arrive.mm>>v->arrive.col2>>v->arrive.ss;
      std::cout<<"Enter date in day month and year: ";
      std::cin>>v->dt.day>>v->dt.sym1>>v->dt.month>>v->dt.sym2>>v->dt.year;




      veh.at(i).pltno=v->pltno;
      veh.at(i).arrive.hh=v->arrive.hh;
      veh.at(i).arrive.mm=v->arrive.mm;
      veh.at(i).arrive.ss=v->arrive.ss;
      veh.at(i).dt.day=v->dt.day;
      veh.at(i).dt.month=v->dt.month;
      veh.at(i).dt.year=v->dt.year;

我希望完成的事情

这是我拥有的代码的一部分 这也是我如何使用 v->pltno = ... 等将数据存储到向量中 我想知道如何将向量中的所有元素存储到散列中 table 请帮助我一无所知如何将所有带有 veh 和 vehleft 的项目存储到哈希中 table 1 用于停车中的车辆,1 用于离开的车辆

执行此类任务的代码是什么样的?

向量的其他代码

std::vector<vehicle> veh(100);
std::vector<vehicle> vehleft(100);

谢谢?

假设您所有的车辆对象都存储在 std::vector<Vehicle> 中,使用 std::unordered_map<std::string, Vehicle> 是一种非常简单的获取散列 table 并填充车辆的方法:

#include <unordered_map>
#include <vector>
#include <string>
//... 
class Vehicle
{
//...
};

void foo()
{
   std::vector<Vehicle> veh(100);
   //...
   std::unorderd_map<std::string, Vehicle> mapVehicle;
   for (auto& v : veh)
   { 
      // add the vehicle v to the hash table
      mapVehicle[v.pltNo] = v;
   }
   //...
}

完成后,您可以使用车牌号查找车辆:

Vehicle& v = mapVehicle["ABC123"]; // this is the vehicle with license plate ABC123

或者为了安全起见(因为使用 [] 进行搜索会在未找到的情况下添加一个空条目),您可以使用 std::unordered_map::find():

检查车辆是否存在
auto iter = mapVehicle.find("ABC123");
if (iter != mapVehicle.end())
{
   Vehicle& v = iter->second;
}