使用迭代器访问对象成员var

时间:2017-03-26 01:43:22

标签: c++ oop iterator median

我有一个(指向)对象的向量 - 人。我有一个能增加收入的功能。我遇到的问题是找到一个人并访问addInc。我有时会对指针/引用感到困惑,更重要的是我是OOP的新手。相关功能是:

bool Population::Income(const string &id, unsigned int amount) {
    Person *Candidate = new Person(id);

    //find company using lower_bound
    iterPeople = lower_bound(m_People.begin(), m_People.end(), Candidate, cmpId);
    if ( iterPeople != m_People.end() && (*iterPeople)->m_id == id ) {
        *(iterPeople)->addInc(amount);
        //request for member 'addInv' in...maybe you meant to use '->'?

        delete Candidate;
        return true;
    }

    delete Candidate;
    return false;

其余代码为HERE。我有两个问题:

  1. 如何解决addInc问题?

  2. 关于lower_bound搜索 - 该方法适用于NewPersonCancelPerson,但Income会被称为A LOT。这种方法足够快吗?有什么方法可以提高效率吗?

  3. BONUS - addInc也来MedianNetworth,它返回所有成功添加的Income的中位数。使用它的有效方法是创建两个堆(最小和最大)。我的初步计划是make_heap课程中的Population

  4. make_heap(m_Audits.begin(), m_Audits.end(), cmpInt);

    但是由于unexpected '(' token,我无法在类中创建堆 - 在main()或任何函数内部使用相同的语法。我究竟做错了什么?显然,我不想在函数内部创建堆,因为每当我想添加一个条目时,我都必须创建一个新的堆。

0 个答案:

没有答案