Так что я должен использовать сортировку по пузырькам, чтобы поменять вектор объектов, используя вектор указателей, указывающих на каждый элемент этого вектора объектов. Я успешно отсортировал вектор объектов, но хотел бы поменять вектор указателей, чтобы отсортировать вектор объектов (требование для назначения). Я попробовал приведенный ниже код, чтобы поменять местами указатели.
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]);
}
Вывод показывает несортированный вектор объектов. Если каждый элемент в векторе указателя указывает на соответствующий элемент в том же индексе указателя объекта, не следует ли поменять вектор указателей местами на вектор объектов?