IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

une solution travaille dans un mode different de c++11


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Par défaut une solution travaille dans un mode different de c++11
    salut
    j'ai le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    include<string>
    string s1="123456789";
    string s2="hello1world2elkantara3prés";
    for(char c:s1){
    std::replace(s2.begin(),s2.end(),c,"\n");
    ...
    et parce que cette boucle(for(char c:s1))est fonctionne en mode (c++11);
    je veux une quelque chose qui fait le même travaille de for mais dans les autre mode non pas c++11;
    parce que j'utilise visuel studio 2010 qui ne supporte pas ce mode ;et ca c'est un exercice d'un prof qui demande un code n'utilise pas c++11!!
    alors s'il vous plait est ce qu'il ya une solution ?

  2. #2
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Je me permet juste de rajouter qu'utiliser un code sans comprendre ce qu'il fait n'est clairement pas la meilleure façon d'apprendre.
    Comprends la ligne qui te poses problème (for(char c: s1)) et tu pourras la remplacer très simplement.
    voir ici par exemple.

    edit:
    La première chose qu'on apprend en info c'est "RTFM" (perso c'était les premiers mots de mon prof de c++).
    Et à l'heure actuelle avec le développement d'Internet ya tellement de doc partout sur à peu près tous les problèmes possibles et imaginable, que c'est probablement le meilleur conseil que j'ai reçu.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    En gros, tu veux traduire ce for de C++11 en C++98?

    Eh bien la traduction mot-à-mot, ça doit être un truc du genre:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include<string>
    using namespace std;
    ...
     
    string s1="123456789";
    string s2="hello1world2elkantara3prés";
    for(string::iterator it=s1.begin() ; it!=s1.end() ; ++it)
    {
    	char c = *it;
    	std::replace(s2.begin(),s2.end(),c,"\n");
    Par contre, il doit y avoir plus "efficace" qu'un itérateur pour parcourir une std::string.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Je pense que la solution avec les itérateurs doit plaire aux profs (ils aiment tellement se compliquer la vie).

    Une astuce en C++11 pour cette boucle for serait d'utiliser la référence pour éviter les copies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string s1 = "123456789";
    for(char &c:s1){
        // Instructions
    Et si lecture seul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string s1 = "123456789";
    for(const char &c:s1){
        // Instructions
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  5. #5
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Je vois pas très bien en quoi utiliser les itérateurs complique la vie Ecrit le code sans itérateur, tu verras que c'est pas plus simple

    Et ton code avec référence n'a pas de sens pour un char

  6. #6
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Et ton code avec référence n'a pas de sens pour un char
    Bonjour,

    Pourquoi n'aurait-t-il pas de sens ?

    Voici un exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <string>
    #include <iostream>
    using namespace std;
     
     
    int main(){
        string s1 = "123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789";
        for(char c : s1){
            cout<<c<<endl;
        }
        return 0;
    }
    Sans référence : 3022Ko (test ici).
    Avec référence : 2988Ko (test ici).

    J'ai répété l'opération plusieurs fois avec une nouvelle opération et j'obtiens les mêmes chiffres, je ne suis sur de rien, mais il me semble qu'on évite la copie et économise de la mémoire.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Et ton code avec référence n'a pas de sens pour un char
    Le fait de pouvoir le modifier directement dans la chaîne ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/06/2014, 00h00
  2. [Débutant] Ajouter une solution existante dans le serveur
    Par DotNET74 dans le forum Visual Studio Team System
    Réponses: 1
    Dernier message: 12/02/2013, 10h23
  3. simulation d'une cellule photovoltaique dans le mode MPPT
    Par atam1987 dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 28/12/2012, 21h25
  4. Intégrer une solution BPM dans GlassFish
    Par DreamInfo dans le forum BPM
    Réponses: 0
    Dernier message: 19/10/2012, 23h37
  5. Réponses: 5
    Dernier message: 07/05/2010, 10h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo