从指针向量获取元素

时间:2018-11-12 09:41:18

标签: c++ c++11

我有一个指针向量:std::vector<Customer*> customersList 现在,我想获得其中一个要素,并对他进行操作。 我不确定我是否知道,我的猜测是:

Customer* source = restaurant.getCustomer(cust);

问题是我不知道在c ++中是否会创建新对象,或者我只是得到对他的引用。 有我的吸气方法:

Customer* Table::getCustomer(int id) {
    for (int i = 0; i < customersList.size(); ++i) {
        if (customersList[i]->getId() == id)
            return customersList[i];
    }
    return nullptr;
}

谢谢

1 个答案:

答案 0 :(得分:5)

成员函数将返回指针的副本,即Customer对象本身不被复制,仅被引用。修改返回的Customer*将导致对pointe(基础对象)进行修改。

请注意,您还想使用<algorithm>标头,特别是std::find_if

const auto  customer = std::find_if(customerList.begin(), customerList.end(),
    [id](const Customer* c){ return c->getId() == id; });

return customer == customerList.cend() ? nullptr : *customer;