Il design della nuova classe di corde della libreria standard era già stato eseguito quando Stroustrup ha introdotto il comitato standard alla STL. Il comitato ha apprezzato l'AWL e ha iniziato a incorporarlo nello standard, adattando così gran parte di ciò che avevano già concordato (e probabilmente anche ritardando lo standard per un altro anno o due).
Tra le altre modifiche, gli iteratori sono stati aggiunti alla classe di corde già finita come un ripensamento. Puoi vedere questo osservando i vari membri della stringa prendendo/restituendo una posizione: è un mix selvaggio di indici e iteratori.
Non è sempre facile indovinare perché alcune funzioni membro hanno solo versioni che assumono indici e altre hanno anche prese da iteratore. Nel caso di std::basic_string<>::find()
, tuttavia, sembra facile: poiché std::find()
restituisce già un iteratore, std::basic_string<>::find()
è rimasto come era.
Quindi stai dicendo che la cattiva interfaccia di 'string :: find' è buona perché interagisce bene con la cattiva interfaccia di' string :: substr'? ;) – Praxeolitic
Non vorrei gironzolare con gli iteratori quando tutto ciò che voglio è ottenere le prime due lettere di una stringa – shoosh
del tipo: begin() + pos – fchen