【发布时间】:2017-05-13 20:00:31
【问题描述】:
我正在尝试访问我的 mainRegister 映射中的第二个元素:
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;
}
}
}
我的主要目标是在映射中找到元素,第二个元素与传递给方法的对象具有相同的 UUID,然后将该对象移动到存档寄存器向量,然后从映射中删除该元素。
我得到的错误是:
-struct std::_Rb_tree_const_iterator >' 没有名为'second'的成员|
-没有匹配函数调用'std::vector::push_back(second_t >)'|
我知道我尝试访问 map 中每一对的第二个元素的方式可能是完全错误的,但我真的不知道该怎么做。
【问题讨论】:
-
尝试使用
it->second->getUUID()(->而不是.来访问second) -
您正在使用点 (.) 运算符取消引用指针类型的对象。按照@max66 的建议做
标签: c++ c++11 dictionary iterator stdmap