QFlatMap: optimize construction from existing containers

Use {copy,move} ctors instead of default-ctor, followed by
(move|copy)-assignment.

Pick-to: 6.3 6.2
Change-Id: Id2fd53050cd353a9374fd065ac25d753d42d1be9
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
bb10
Marc Mutz 2022-01-08 14:44:45 +01:00
parent e809d4e3cc
commit 3917838d64
1 changed files with 7 additions and 14 deletions

View File

@ -439,23 +439,20 @@ public:
}
explicit QFlatMap(key_container_type &&keys, const mapped_container_type &values)
: c{std::move(keys), values}
{
c.keys = std::move(keys);
c.values = values;
ensureOrderedUnique();
}
explicit QFlatMap(const key_container_type &keys, mapped_container_type &&values)
: c{keys, std::move(values)}
{
c.keys = keys;
c.values = std::move(values);
ensureOrderedUnique();
}
explicit QFlatMap(key_container_type &&keys, mapped_container_type &&values)
: c{std::move(keys), std::move(values)}
{
c.keys = std::move(keys);
c.values = std::move(values);
ensureOrderedUnique();
}
@ -473,30 +470,26 @@ public:
explicit QFlatMap(Qt::OrderedUniqueRange_t, const key_container_type &keys,
const mapped_container_type &values)
: c{keys, values}
{
c.keys = keys;
c.values = values;
}
explicit QFlatMap(Qt::OrderedUniqueRange_t, key_container_type &&keys,
const mapped_container_type &values)
: c{std::move(keys), values}
{
c.keys = std::move(keys);
c.values = values;
}
explicit QFlatMap(Qt::OrderedUniqueRange_t, const key_container_type &keys,
mapped_container_type &&values)
: c{keys, std::move(values)}
{
c.keys = keys;
c.values = std::move(values);
}
explicit QFlatMap(Qt::OrderedUniqueRange_t, key_container_type &&keys,
mapped_container_type &&values)
: c{std::move(keys), std::move(values)}
{
c.keys = std::move(keys);
c.values = std::move(values);
}
explicit QFlatMap(Qt::OrderedUniqueRange_t, std::initializer_list<value_type> lst)