Utilizzando C++ 11, mi piace creare un array di booleani e subito chiaro chePosso dire la dimensione di una matrice creata con "nuovo tipo [n]" in C++?
bool *mymap = new bool[n];
n è variabile.
Ora, questo cancella già la memoria occupata dall'array? In caso contrario, esiste un approccio migliore per cancellare la matrice rispetto all'utilizzo di un ciclo su tutti gli elementi, impostando ciascuno su false individualmente?
Ho considerato l'utilizzo di std: memset(), ma ciò richiede che conosca la dimensione dell'array. Ora, i principianti potrebbero dire: Facile, la dimensione è n * sizeof (bool). Ma non lo compro. Il compilatore potrebbe decidere di comprimerli in modo diverso, persino impacchettarli come bit, no?
Quindi, c'è un modo per dire la dimensione della matrice in modo più pulito? Immagino che potrebbe esserci una funzione std: arraysize() che restituisce semplicemente lo spazio della matrice allocata in memoria. Dopotutto, tali informazioni devono essere mantenute in fase di esecuzione in qualche modo, o una chiamata di eliminazione non saprebbe quanto rilasci, giusto?
Cosa c'è di sbagliato con 'std :: VECTOR'? – chris
@chris std :: vector overkill nel mio caso d'uso particolare - anche l'uso di un array diretto è più veloce. –
Se si crea un 'std :: vector' con una dimensione specifica, il sovraccarico è minimo. Dovresti davvero confrontarlo. –