Pergunta

Eu tenho um fluxo de dados que eu quero lugar em um recipiente. Este recipiente será ou de tamanho fixo ou restringido de forma dinâmica para um determinado tamanho em tempo de execução. Este último pode ser preferível.

Quando o recipiente estiver cheio, os dados mais antigos serão removidos.

Eu quero mostrar esses dados usando um wxVListBox porque eu preciso de controle total do visor. No entanto, há um problema: as chamadas para OnDrawItem é significado não atômica que uma vez que o recipiente estiver cheio, cada chamada a OnDrawItem será o acesso a dados móveis, o resultado será uma exibição não-contígua com elementos em falta.

Isto é certamente verdadeiro com qualquer recipiente com nativa matriz como indexação, são exigidas OnDrawItem .

Eu posso simular matriz como indexação em um std :: map usando iterador indexação, se a chave é inteiro seqüencial, em seguida, todos os itens serão ordenados e o mapa pode ser podadas com bastante facilidade, mas que parece ser um truque ineficiente.

Como posso resolver isso? Quaisquer outras idéias ou recipientes eu não tenha pensado?

Foi útil?

Solução

A melhor abordagem parece ser a de gerenciar o estado recipiente cheio preguiçosamente dentro OnDrawBackground . Dessa forma, o próprio UI assegura que os dados permanece estático nas chamadas subsequentes para OnDrawItem , usando um deque como o recipiente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top