首页 > 解决方案 > 如何根据STL中类的参数找到指向类的指针?

问题描述

我正在创建一个项目,我在其中将指向对象的指针存储在向量(STL)中。我想根据 class 的特定参数执行操作。但是如何使用它我没有得到???

void BankingSystem :: Account_info()
{
    // Account * mAccount = vobject.back();
    long int ACC_NUMBER;
    cout << "Enter AccountNumber : " <<endl;
    cin >> ACC_NUMBER;
    Account * mAccount = std::find(vobject.begin(),vobject.end(),ACC_NUMBER); //finding based on Account number u can use any parameter
    cout << mAccount->Acc_holder.firstName << endl;
    cout << mAccount->Acc_holder.aadharNo <<endl;
    delete mAccount;
} 

标签: c++stl

解决方案


std::find(and std::find_if) 返回一个迭代器到找到的元素(或者vobject.end()如果它没有找到)。

你可以这样改变它:

void BankingSystem :: Account_info()
{
    long int ACC_NUMBER;
    cout << "Enter AccountNumber : " <<endl;
    cin >> ACC_NUMBER;

    auto mAccount = std::find_if(vobject.begin(), vobject.end(),
                                [&ACC_NUMBER](const Account* a) {
                                    // acc_number is maybe called something else in
                                    // your Account class.
                                    return a->acc_number == ACC_NUMBER;
                                });

    // check that you actually found something before printing and erasing:
    if(mAccount != vobject.end()) {
        auto AccountPtr = *mAccount;
        cout << AccountPtr->Acc_holder.firstName << endl;
        cout << AccountPtr->Acc_holder.aadharNo <<endl;
        vobject.erase(mAccount);    // not "delete mAccount;"
        delete AccountPtr;          // if it's actually is supposed to be deleted
    }
}

但是,您很可能应该存储Account而不是存储Account*在您的vector.


推荐阅读