map: use value semantics for MapLocation

This makes memory management more simple, as not explicit deletion
is necessary.

A rather large commit, because changing QVector<> to std::vector<>
is propagated up the call chain.

Adds a new range_contains() helper function for collection
types such as std::vector<>. I didn't want to call it
contains(), since we already have a contains function
for strings and let's keep argument overloading simple.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-05-11 13:21:53 +02:00 committed by bstoeger
parent e39dea3d68
commit 6b835710bc
17 changed files with 84 additions and 75 deletions

View file

@ -22,6 +22,7 @@
#include "commands/command_base.h"
#include "core/errorhelper.h"
#include "core/qthelper.h"
#include "core/range.h"
#include "core/trip.h"
#include "desktop-widgets/divelistview.h"
#include "core/metrics.h"
@ -439,13 +440,13 @@ void DiveListView::selectDiveSitesOnMap(const std::vector<dive *> &dives)
// the dive-site selection is controlled by the filter not
// by the selected dives.
if (!DiveFilter::instance()->diveSiteMode()) {
QVector<dive_site *> selectedSites;
std::vector<dive_site *> selectedSites;
selectedSites.reserve(dives.size());
for (dive *d: dives) {
if (!d->hidden_by_filter && d->dive_site && !selectedSites.contains(d->dive_site))
if (!d->hidden_by_filter && d->dive_site && !range_contains(selectedSites, d->dive_site))
selectedSites.push_back(d->dive_site);
}
MapWidget::instance()->setSelected(selectedSites);
MapWidget::instance()->setSelected(std::move(selectedSites));
}
#endif
}