In diesem Fall der einzige Wert, den Sie es einstellen kann, ist false
mit:
bool* a = new bool[100000]();
Das heißt, ich bin mir nicht sicher, warum Sie denken, würden Sie nicht eine Schleife verwenden können. Sie sind aus einem bestimmten Grund da. Sie sollten einfach die vorgefertigte Funktion fill
oder fill_n
(je nach Geschmack) verwenden.
Hinweis mit new
"roh" wie das ist schrecklich Programmierpraxis. Verwenden Sie ein std::vector<bool>
*:
std::vector<bool> v;
v.resize(100000);
std::fill(v.begin(), v.end(), true); // or false
Oder:
std::vector<bool> v;
v.reserve(100000);
std::fill_n(std::back_inserter(v), 100000, true); // or false
* Natürlich std::vector<bool>
geschieht die richtige Container-Schnittstelle brechen so nicht wirklich bool
‚s speichern. Wenn das ein Problem ist, verwenden Sie stattdessen eine std::vector<char>
.
ich einen Vektor wurde mit, aber es war viel zu langsam. Also suche ich nach einer schnelleren Lösung. Aber ich habe nicht füllen verwenden, also denke ich, dass dies schneller sein kann. –
@BSeven: Ich bezweifle ernsthaft, dass dein Anspruch wahr ist und dass du in einer Position bist, in der es sowieso wichtig wäre. Verwenden Sie einen 'std :: vector', der die Verwaltung für Sie übernimmt, damit Sie Lecks nicht leicht vermeiden können. Haben Sie Ihre vollständig fertig gestellte Release-Build-Anwendung profiliert und festgestellt, dass die vorgeschlagenen Ergebnisse mit einem "std :: vector" den langsamsten Teil Ihrer Anwendung darstellen? (Nr.) – GManNickG
@BSeven: An welchem Punkt war Vektor so langsam? Bei Release-Compiles sollte es bei korrekter Verwendung so schnell wie ein RAW-Array sein. – Philipp