„normalna” sposobem usuwania elementu z wektora idzie tak:std :: vector :: wymazać vs „swap i pop”
vec.erase(vec.begin() + index);
Ale teoretycznie to szybciej po prostu to zrobić:
if (vec.size() >= 2)
{
std::swap(vec.begin() + index, vec.end() - 1);
vec.pop_back();
}
else
{
vec.clear();
}
Czy jest jakikolwiek powód, aby nie używać tego ostatniego?
Potrzebujesz normalnego sposobu, aby zachować porządek. – zch
Jeśli chcesz, aby usuwanie było szybkie, zawsze możesz skorzystać z listy połączonej. – CompuChip
@CompuChip To skończy się wolniej niż drugi przykład, a listy z linkami są w zasadzie powolne domyślnie. – Veedrac