LINUX.ORG.RU

Померять каким-нибудь профайлером.

А ваще для gcc:

(sizeof(A) + sizeof(B) + sizeof(_Rb_tree_node_base)) * N + sizeof(_Rb_tree)
DELIRIUM ☆☆☆☆☆
()

Для узла: залезть в реализацию и посчитать размеры структур.

Для всего map: взять какой-нибудь аллокатор, умеющий считать статистику, и передать его в map.

Ещё возможно стоить учесть возможную внутреннюю фрагментацию хипа.

xaizek ★★★★★
()
Ответ на: комментарий от DELIRIUM

А ваще для gcc:
(sizeof(A) + sizeof(B) + sizeof(_Rb_tree_node_base)) * N + sizeof(_Rb_tree)

Примерно в этом ключе и интересует, но типа _Rb_tree_node_base там не нашлось. Я компилю на Qt по убунту, насколько я понимаю это тот же gcc.

victor79
() автор топика
Ответ на: комментарий от anonymous

sizeof(std::map<T,U>::value_type)

это размер данных узла, но не самой структуры узла. Это std::pair<T,U>.

victor79
() автор топика

с++17 предлагает std::map<>::node_type для этой цели, до c++17 стандартных способов нет - только implementation-defined, а то и просто в исходниках смотреть

Deleted
()
Ответ на: комментарий от victor79

Я компилю на Qt

Так тебя интересует std::map или QMap?

XMs ★★★★★
()
Ответ на: комментарий от Deleted

с++17 предлагает std::map<>::node_type для этой цели,

Не для этой, а для возможности быстрого перенесения нодов между мапами (и без копирования). К тому же может вполне быть допольнительной структурой, т.к. handle

http://en.cppreference.com/w/cpp/container/node_handle

KennyMinigun ★★★★★
()
Ответ на: комментарий от KennyMinigun

Я говорил в контексте вопроса ТС. Вероятно, ему это и понадобилось в рамках подобной задачи

Deleted
()
Ответ на: комментарий от xaizek

Для всего map: взять какой-нибудь аллокатор, умеющий считать статистику, и передать его в map.

Или имзерить общее потребление по всему аллокатору до создания map и после заполнения

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.