W takim przypadku jedyną wartością można go ustawić na to false
z:
bool* a = new bool[100000]();
powiedział, że nie jestem pewien, dlaczego uważasz, że nie można korzystać z pętli. Są tam z jakiegoś powodu. Powinieneś po prostu użyć gotowej funkcji fill
lub fill_n
(w zależności od gustu).
Uwaga użyciu new
„surowe”, jak to jest straszna praktyka programowania. Użyj std::vector<bool>
*:
std::vector<bool> v;
v.resize(100000);
std::fill(v.begin(), v.end(), true); // or false
Lub:
std::vector<bool> v;
v.reserve(100000);
std::fill_n(std::back_inserter(v), 100000, true); // or false
* Oczywiście, std::vector<bool>
stanie złamać właściwego interfejsu pojemnika tak faktycznie nie przechowywać bool
„s. Jeśli jest to problem, użyj zamiast tego std::vector<char>
.
używałem wektor, ale to było zbyt powolne. Dlatego szukam szybszego rozwiązania. Ale nie użyłem wypełnienia, więc myślę, że to może być szybciej. –
@BSeven: Poważnie wątpię, że twoje roszczenie jest prawdziwe i że jesteś w sytuacji, w której i tak by to miało znaczenie. Użyj 'std :: vector', zarządza on za Ciebie, aby uniknąć problemów z wyciekami. Czy profilowałeś w pełni ukończoną aplikację do generowania wersji i stwierdziłeś, że sugerowane wyniki przy użyciu 'std :: vector' były najwolniejszą częścią twojej aplikacji? (No.) – GManNickG
@Seven: w którym momencie wektor był tak wolny? W kompilacjach z wydaniem powinna być tak szybka, jak surowa tablica, jeśli jest używana poprawnie. – Philipp