Respuesta

12

En ese caso, el único valor que puede configurarlo para que se false con:

bool* a = new bool[100000](); 

Dicho esto, no estoy seguro de por qué se podría pensar que no se puede utilizar un bucle. Están ahí por una razón. Solo debe usar la función lista para usar fill o fill_n (según el gusto).


Nota usando new "cruda" como esa es una terrible práctica de programación. Use un std::vector<bool> *:

std::vector<bool> v; 

v.resize(100000); 
std::fill(v.begin(), v.end(), true); // or false 

O:

std::vector<bool> v; 

v.reserve(100000); 
std::fill_n(std::back_inserter(v), 100000, true); // or false 

* Por supuesto, std::vector<bool> sucede a romper la interfaz contenedor adecuado para que en realidad no almacenar bool 's. Si es un problema, use un std::vector<char>.

+0

que estaba usando un vector, pero era demasiado lento. Así que estoy buscando una solución más rápida. Pero no usé el relleno, así que creo que esto puede ser más rápido. –

+0

@BSeven: Dudo seriamente que su reclamo sea cierto y que usted está en una posición en la que de todos modos le importaría. Use un 'std :: vector', maneja la administración por usted para evitar fugas fáciles. ¿Perfilaron su aplicación de lanzamiento-compilación completamente completa y encontraron que los resultados sugeridos con un 'std :: vector' eran la parte más lenta de su aplicación? (No.) – GManNickG

+0

@BSeven: ¿en qué momento el vector era tan lento? En las compilaciones de lanzamiento, debe ser tan rápido como una matriz en bruto si se usa correctamente. – Philipp

14

Además de lo dicho anteriormente GMan, creo que se puede especificar un valor inicial para cada valor de su vector en la construcción como esta ..

vector<bool> a (100000, true); 
+1

+1 Duh por mi parte, muy simple. :) – GManNickG

2

se debe preferir el enfoque vectorial, pero también se puede usar memset.

1

Si 0 is false y 1 is true considerado - que puede hacer

bool* a = new bool[100]; 
std::fill_n(a, 100, 1); // all bool array elements set to true 
std::fill_n(a, 100, 0); // all bool array elements set to false 
Cuestiones relacionadas