Containerul clasic std::map este implementat intern ca un arbore echilibrat roșu-negru (Red-Black Tree). Deși oferă o complexitate teoretică excelentă de căutare $O(\log N)$, fiecare nod este o alocare independentă pe heap. Când arborele este traversat, procesorul sare haotic între adrese de memorie dispersate (Pointer Chasing), generând sute de Cache Misses în ierarhia de memorie a CPU-ului. Introdus în C++23, adaptorul std::flat_map stochează cheile și valorile în vectori contigui separați, oferind căutare binară de până la 10 ori mai rapidă datorită localității maxime a cache-ului hardware.
#include <flat_map>
#include <string>
#include <print>
int main() {
// Interfață 100% identică cu std::map, dar memorie 100% contiguă:
std::flat_map<std::string, double> preturiProduse;
preturiProduse["Monitor 4K"] = 1899.99;
preturiProduse["Tastatura Mecanica"] = 450.00;
preturiProduse["Mouse Wireless"] = 280.50;
// Căutare ultra-rapidă prin bisection search în vectorul intern de chei:
if (auto it = preturiProduse.find("Monitor 4K"); it != preturiProduse.end()) {
std::println("Pret gasit: {:.2f} RON", it->second);
}
// Extracția directă a vectorilor subiacenți fără copiere:
auto containere = std::move(preturiProduse).extract();
std::println("Numar chei contigue: {}", containere.keys.size());
return 0;
}
std::map sau std::unordered_map rămân de preferat pentru a evita re-ordonarea vectorului contiguu.