Vous pouvez vous attendre à ce que la plupart des opérations sur une std::string (comme par exemple find
) pour être aussi optimisés que possible, de sorte qu'ils sont susceptibles de fonctionner au moins aussi bien qu'un homologue en C pur.
Il est également intéressant de noter que les itérateurs std::string correspondent souvent à des pointeurs sur le tableau de caractères sous-jacent. Ainsi, tout algorithme conçu à partir d'itérateurs est essentiellement identique, en termes de performances, au même algorithme conçu à partir de char *.
Les points à surveiller sont, par exemple, les suivants operator[]
- la plupart des implémentations STL n'effectuent pas de vérification des limites, et devraient traduire cette opération en la même opération sur le tableau de caractères sous-jacent. AFAIK STLPort peut optionnellement effectuer un contrôle des limites, auquel cas cet opérateur serait un peu plus lent.
Qu'est-ce que l'utilisation de std::string vous apporte ? Elle vous dispense de la gestion manuelle de la mémoire ; le redimensionnement du tableau devient plus facile, et vous devez généralement moins penser à libérer de la mémoire.
Si vous êtes préoccupé par les performances lors du redimensionnement d'une chaîne de caractères, il existe une fonction reserve
que vous trouverez peut-être utile.