Я работаю над игрой с картой 16000 X 9000 единиц. Если я нахожусь в любой точке X, Y на карте, я могу видеть радиус до 2000 единиц. Я хотел кое-что, из чего я мог управлять, посетил ли я определенный регион или нет. Главный вопрос: стоит ли брать массив bools? Это будет слишком большое посещение [16000 * 9000]. Так хотела посоветовать, спасибо. Я новичок в stackoverflow, извините, если я не до сути.
Было бы действительно неэффективно использовать массив bool
типы. Главным образом потому, что размер bool
в C ++ может быть роскошно большим. (На моей платформе он имеет длину 8 бит, что означает, что его 7 бит не используются.) Стандарт C ++ не определяет значение sizeof(bool)
,
Рассмотрите возможность использования std::vector<bool>
вместо этого: это явная специализация std::vector
и стандарт C ++ гарантии это плотно упаковано: то есть нет потерянного места. Вы может быть нужен std::vector<std::vector<bool>>
если у вас трудно получить один непрерывный блок памяти. Это все сказал, некоторые люди не любят bool
специализация на векторах с удвоенной силой, поэтому тщательно обдумайте это перед тем, как окунуться. (Есть движение, чтобы рассмотреть вопрос о том, чтобы планировать его как устаревшее!)
Или ты мог кусковой области вашего графика объединяются в набор целых типов, таких как unsigned
,
Если вам нужно, чтобы обнаруженная область была круглой (что подразумевает использование вами радиуса), вы должны использовать этот огромный массив, да.
Если это не обязательно должен быть идеальный круг, то вы можете просто уменьшить выборку: скажем, вы используете шероховатость 10 блоков — тогда вам нужен только массив размером 1600×90 — сокращение в 100 раз по сравнению с идеальным кругом.