Dans ce morceau de codeExiste-t-il un moyen standard de remplacer un tableau booléen de type C?
void legacyFunction(int length, bool *bitset)
{
// stuff, lots of stuff
}
int main()
{
int somenumber = 6;
// somenumber is set to some value here
bool *isBitXSet = new bool[somenumber];
// initialisation of isBitXSet.
legacyFunction(somenumber, isBitXSet);
delete[] isBitXSet;
return 0;
}
J'aimerais remplacer bool *isBitXSet = new bool[somenumber];
par quelque chose comme
std::vector<bool> isBitXset(somenumber, false);
Mais je ne peux pas faire
legacyFunction(somenumber, isBitXSet.data());
parce data()
n'existe pas pour std::vector<bool>
. Et je ne peux pas changer l'interface de legacyFunction()
.
Existe-t-il une bonne alternative au tableau booléen de type C?
Notez que la fonction membre 'data()' manquante n'est pas le seul problème. 'std :: vector' est une spécialisation qui peut fournir une implémentation plus compacte. Ainsi, les éléments du «vecteur » et d'un tableau «bool» de style C peuvent ne pas se chevaucher. –
Copie possible de [Alternative au vecteur] (https://stackoverflow.com/questions/670308/alternative-to-vectorbool) –
moooeeeep
@moooeeeep Ouais, à droite, désolé. Normalement, je supprimerais la question moi-même. Mais j'aime la réponse donnée par Vittorio Romeo beaucoup plus que n'importe laquelle de ces réponses de 2009. – TobiMcNamobi