Блог пользователя gmusya

Автор gmusya, история, 3 года назад, По-русски

Одно и то же решение (и один и тот же код) совершенно по-разному жрёт память под разными компиляторами. Возможно, это связано с тем, что в решении задачи 1009F - Доминирующие индексы я использую vector/set/map, но всё-равно всё как-то непонятно. Кто-нибудь знает, в чём причина?

GNU C++17 9.2.0 (105469764)

GNU C++17 7.3.0 (105470465)

  • Проголосовать: нравится
  • +23
  • Проголосовать: не нравится

»
3 года назад, # |
  Проголосовать: нравится +38 Проголосовать: не нравится

GNU C++17 (64) 64-х битный, поэтому в нем каждый указатель занимает 8 байт, а не 4. Если ты используешь set/map, то логично, что в памяти хранится много указателей, поэтому потребление памяти и возрастет в два раза.

»
3 года назад, # |
Rev. 3   Проголосовать: нравится +27 Проголосовать: не нравится

При сборке 64-битным компилятором и 32-битным размер указателей при использовании std::map и std::set получается различным (на 64-битном в два раза больше). Размер мапы зависит не только от размеров типов ключа и значения, но и от размера указателей.

См. две посылки: - C++17 (64-bit): 105474002 - C++11 (32-bit): 105473976