См. Пример здесь. Количество распределений для обоих карт, которая зарезервировала количество вставок, так и той, у кого нет одинакового? . < /p>
Код: Выделить всё
#include
#include
#include
#include
using namespace std;
inline size_t AllocationCounter = 0;
template
struct my_alloc {
using value_type = T;
my_alloc(){ };
template
constexpr my_alloc(const my_alloc& Other) noexcept { }
T* allocate(std::size_t n) {
AllocationCounter++;
return static_cast(::operator new (n * sizeof(T)));
}
template
void construct(T* p, Args&&... args) {
new (p) T(std::forward(args)...);
}
void deallocate(T* p, std::size_t n) noexcept {
AllocationCounter --;
delete p;
}
void destroy(T* p) noexcept {
p->~T();
}
};
void with_reserve()
{
unordered_map m1;
m1.reserve(1000); ///
output: < /p>
With reserve - 1001 Allocations
Without reserve - 1001 Allocations
Подробнее здесь: https://stackoverflow.com/questions/793 ... mnt-policy