访问MAP中的第二个元素,这是对象指针

Accessing second element in map which is object pointer

本文关键字:对象 指针 元素 MAP 第二个 访问      更新时间:2023-10-16

我正在尝试在我的主登记中访问第二个元素:

 class Manager
{
private:
    std::map<boost::uuids::uuid, Rental*> mainRegister;
    std::vector <Rental*> archiveRegister;
    std::vector<Client*> ClientRegister;
    std::vector<Vehicle*> VehicleRegister;
public:
    Manager();
    void createRental();
    void deleteRental(Rental rent);
    std::string showArchive() const;
    std::string showMain() const;
    std::string showVehicles() const;
    std::string showClients() const;
    void sortDate();
    void sortClient();
    bool checkVehicle(std::map <Vehicle*, Rental*> myMap);
    virtual ~Manager();
protected:

};

这是我想做的:

void Manager::deleteRental(Rental* rent)
{
  for (auto it = mainRegister.cbegin(); it != mainRegister.cend()
  {
    if (it.second->getUUID() == rent->getUUID())
    {
      archiveRegister.push_back(it.second);
      mainRegister.erase(it++);
    }
    else
    {
      ++it;
    }
  }
}

我的主要目标是在MAP中找到元素,第二个元素与传递给方法的对象具有相同的UUID,然后将该对象移至存档寄存器向量,然后从地图中删除该元素。p>我遇到的错误是:

-no匹配函数,用于呼叫'std :: vector :: push_back(second_t>)'|

我知道,可能是我试图访问地图中每对第二个元素的方式是完全错误的,但是我真的不知道该怎么做。

您的if语句无法正确使用it迭代器,迭代器类似于指针,因此应该是:

if (it->second->getUUID() == rent->getUUID())
      ^^