У меня есть поток данных, который я хочу поместить в контейнер. Этот контейнер будет иметь фиксированный размер или динамически ограничен определенным размером во время выполнения. Последнее может быть предпочтительным.
Когда контейнер заполнен, самые старые данные будут удалены.
Я хочу отобразить эти данные, используя wxVListBox , потому что мне нужен полный контроль над дисплеем. Однако есть проблема: вызовы OnDrawItem не являются атомарными, что означает, что после заполнения контейнера каждый вызов OnDrawItem будет обращаться к движущимся данным, результат будет непрерывный дисплей с отсутствующими элементами.
Это, безусловно, верно для любого контейнера с собственным индексированием, подобным массиву, который требуется OnDrawItem .
Я могу смоделировать индексацию, подобную массиву, в std :: map , используя индексацию итератора, если ключ является последовательным целым числом, тогда все элементы будут упорядочены, и карту можно будет легко удалить, но это похоже на неэффективный хак.
Как я могу решить это? Какие-нибудь другие идеи или контейнеры, о которых я не думал?