Ho la seguente funzione di modello che restituisce una copia della mappa data con i tasti e valori scambiati:Fare un lavoro di modello sia con std :: map e std :: unordered_map
template<typename M>
auto swapKeysAndValues(const M& m) {
std::map<typename M::mapped_type, typename M::key_type> swapped;
for (auto& p : m) {
swapped.emplace(p.second, p.first);
}
return swapped;
}
C'è un modo di il modello sopra riportato funziona sia per std::map
sia per std::unordered_map
? Cioè, per std::map<K, V>
, dovrebbe restituire std::map<V, K>
, e per std::unordered_map<K, V>
, dovrebbe restituire std::unordered_map<V, K>
.
un buon inizio, ma che dire di allocatori, funzioni hash e predicati di confronto? –
@RichardHodges funziona solo con mappe con predicato standard/hash/allocatore ... È difficile dire quale comparatore è stato utilizzato ecc. – ForEveR
d'accordo. Penso che la complessità implicata in una soluzione corretta renda la soluzione più complessa del problema. probabilmente non è una funzione che dovrebbe essere definita. –