Code :
- void reverse(string s){
- string::iterator itor1= s.begin();
- string::iterator itor2= s.end();
- while(itor1<itor2){
- swap(*itor1,*itor2);
- ++itor1;
- ++itor2;
- }
- }
|
On ne peut pas le faire sur un fichier FILE*, car il n'a qu'un seul pointeur intégré.
À propos des espaces de noms... les qualifications d'accès ne sont pas possible sur les opérateurs.
C'est le moment de connaitre leur vrai nom:
Code :
- namespace N1{
- class C{};
- void operator+(C&,C&){};
- }
- namespace N2{
- void operator*(N1::C&,N1::C&){};
- }
- int main(){
- N1::C c1, c2;
- c1 + c2 ; //cherche implicitement dans l'espace de C (1)
- operator+(c1 , c2); //ne marche pas ?
- N1::operator+(c1, c2); //qualifié
- c1 * c2; //ne trouves pas
- using N2::*; //pas comme ça
- c1 N2::* c2; //ni comme ça
- using N2::operator*; //ok
- c1 * c2; //ok maintenant
- using ::operator*; //ne marche pas ?
- }
|
(1) Je crois que c'est une forme de 'Koenig lookup'.
Les deux '?' devraient marcher il me semble. Si quelqu'un a l'explication...
Mais non, C++ n'est pas complexe.
---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone