Поменять вектор указателей на объекты для вывода замененных объектов - PullRequest
0 голосов
/ 06 марта 2020

Так что я должен использовать сортировку по пузырькам, чтобы поменять вектор объектов, используя вектор указателей, указывающих на каждый элемент этого вектора объектов. Я успешно отсортировал вектор объектов, но хотел бы поменять вектор указателей, чтобы отсортировать вектор объектов (требование для назначения). Я попробовал приведенный ниже код, чтобы поменять местами указатели.

void BubSort(vector<List*> & vect, unsigned sortWay) {
            switch (sortWay) {
            case 2:
                if (vect[j]->GetId() > vect[j + 1]->GetId()) {
                    BubSortMeth(vect[j], vect[j + 1]);
                } break;
            case 3:
                if (vect[j]->GetName() > vect[j + 1]->GetName()) {
                    BubSortMeth(vect[j], vect[j + 1]);
                } break;
            case 4:
                if (vect[j]->GetQuant() > vect[j + 1]->GetQuant()) {
                    BubSortMeth(vect[j], vect[j + 1]);
                } break;
            case 5: 
                if (vect[j]->GetPrice() > vect[j + 1]->GetPrice()) {
                    BubSortMeth(vect[j], vect[j + 1]);
                } break;
            }
        }
    }
};
void BubSortMeth(List *lhs, List *rhs) {
    List * temp = lhs;
    lhs = rhs;
    rhs = temp;
}

Я использую приведенный ниже код для создания моего вектора объектов и вектора указателей на каждый объект в этом векторе

    while (fin >> tempVect) {           // input to temp List first then iterate through vector to set variables
        vectList.push_back(tempVect);
        vectList[i].SetId(tempVect.GetId());
        vectList[i].SetName(tempVect.GetName());
        vectList[i].SetQuant(tempVect.GetQuant());
        vectList[i].SetPrice(tempVect.GetPrice());
        if (vectList[i].GetPrice() < 0 || vectList[i].GetQuant() < 0) {
            vectList.erase(vectList.begin() + (i));
        }
        else {
            ++i;
        }
    }
    for (unsigned i = 0; i < vectList.size(); i++)
    {
        pointVectList.push_back(&vectList[i]);
    }

Вывод показывает несортированный вектор объектов. Если каждый элемент в векторе указателя указывает на соответствующий элемент в том же индексе указателя объекта, не следует ли поменять вектор указателей местами на вектор объектов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...