Crunchez vos adresses URL
|
Calculez la conso électrique de votre PC
|
Hébergez vos photos
Page 303 sur 303 PremièrePremière ... 203253293295296297298299300301302303
Affichage des résultats 9 061 à 9 076 sur 9076
  1. #9061
    T'Choupi découvre le monde Avatar de Alab
    Ville
    Rennes
    Dites voir, dans C++11 on peut faire facilement des alias avec using mais je capte pas ce que je fais mal pour que ça fonctionne pas. :/
    Je veux utiliser des itérateurs, donc plutôt qu'écrire à chaque fois std::vector<int>::iterator je veux me faire des alias.

    Code:
    	// 'Alias' pour les iterators :
    	template <typename T>
    	using constItVec = std::vector<T>::const_iterator;
    
    	template <typename T>
    	using itVec = std::vector<T>::iterator;
    Où T prendra différents types en fonction de mes besoins.

    Ensuite j'ai donc une classe avec son .h mais deux .cpp et j'en aurais besoin que pour un des deux. Du coup ma définition de itVec et constItVec je la place où exactement ? Est-elle correcte ?

    Et on est d'accord qu'ensuite je n'aurais plus qu'à faire genre :
    Code:
    std::vector<int> * mon_vecteur;
    itVec<int> mon_iterateur1 = mon_vecteur->begin();
    constItVec<int> mon_iterateur2 = mon_vecteur->begin();

  2. #9062
    Je connais assez mal cette utilisation de using mais essaye d'ajouter typename devant std::vector<T>::... (je crois que le compilateur ne connait pas encore vector<T> et ne sais donc pas que const_iterator est un type).

    Sinon donne l'erreur, ça peut aider.

    Place le dans un header si tu en as besoin dans plus d'un fichier.

    Edit: avec ton code, mon g++ 6 me dit: need ‘typename’ before ‘std::vector<T>::const_iterator’ because ‘std::vector<T>’ is a dependent scope. C'est clair comme message d'erreur au moins.

  3. #9063
    Sinon tu t'emmerdes pas et tu fais:
    Code:
    std::vector<int> * mon_vecteur;
    auto mon_iterateur1 = mon_vecteur->begin();
    auto mon_iterateur2 = mon_vecteur->cbegin();
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution." · 6hit combo!

  4. #9064
    T'Choupi découvre le monde Avatar de Alab
    Ville
    Rennes
    Alors le truc c'est qu'ensuite je vais devoir paralléliser avec OpenMP, qui ne supporte pas vraiment auto si j'ai bien lu. Mais je retiens pour une prochaine fois.

    Ok c'est bon avec typename devant std::vector<T> ça fonctionne, visual studio était pas aussi précis que gcc sur l'erreur qu'il me renvoyait. Merci !

  5. #9065
    T'Choupi découvre le monde Avatar de Alab
    Ville
    Rennes
    Ah et d'ailleurs, vous pensez quoi de l'utilisation des itérateurs pour parcourir un std::vector pour ensuite devoir faire des opérations du type :
    Code:
    for(int index=0; index<vecteur1_parcouru->size(); index++
    vecteur2[index] = operation(vecteur1_parcouru[index]);
    Parce que c'est par mal ce genre de truc que j'ai à faire, donc en ajoutant un itérateur pour le vecteur1_parcouru c'est cool pour accéder facilement à la valeur dont j'ai besoin, mais pour accéder à ce qui anciennement était vecteru2[index] je suis obligé aussi de faire un itérateur pour vecteur2 que j'incrémente à chaque fois que je suis dnas la boucle, ou alors ya une astuce que je ne connais pas ?

  6. #9066
    Citation Envoyé par Patate Voir le message
    En outil d'analyse statique vous pensez à quoi ? Statique c'est que ça analyse uniquement le code source, pas pendant l'exécution ?
    Sans ordre particulier :

    - Visual Studio a une option "/analyze" qu'on peut lancer depuis l'IDE (faut juste la trouver au milieu des analyses de perf)
    - clang-analyze
    - PVS Studio en version d'essai
    - CPPCheck

  7. #9067
    Si tu fais du calcul sur des vecteurs et des matrices en OpenMP, te fais pas chier avec des itérateurs, fais des boucles sur des entiers et indexe les std::vector avec comme si c'était des tableaux C. Sinon tu es à peu près sûr de paumer ton compilateur (déjà que si ta boucle est pas écrite exactement avec le bon type signed/unsigned, la bonne condition d'arrêt != ou <, et le bon incrément, le compilo se vautre...)

  8. #9068
    T'Choupi découvre le monde Avatar de Alab
    Ville
    Rennes
    Ah ok, et c'est par expérience que tu parles j'imagine, ya rien spécialement dans la littérature pour justifier ça ?
    Je te crois c'est pas le problème, c'est plus pour dire ça à mon tuteur à qui j'avais demandé avant si valait mieux utiliser des itérateurs ou des entiers pour parcourir mes vecteurs... :/

  9. #9069
    A partir d'OpenMP 3.0 on peut paralléliser sur les itérateurs, mais comme dit mogluglu il faut que ta boucle soit "bien écrite" pour être sûr que le compilo arrive à s'en dépatouiller, ce qui est beaucoup plus garanti en faisant un compteur à la C. Après c'est vrai que purement au niveau programmation , c'est "sale".

    Ou alors tu attends C++17 et la parallel STL
    Citation Envoyé par Sidus Preclarum Voir le message
    Ben du caramel pas sucré alors...
    "Avant, j'étais dyslexique, masi aujorudh'ui je vasi meiux."

  10. #9070
    La littérature dit ça plus ou moins en creux, parce que quasiment tous les papiers sur la parallélisation des 40 dernières années supposent des accès par indices à des tableaux Fortran ou C (statiques ou à la limite pointeurs restrict).
    Les itérateurs C++, c'est jamais que des pointeurs glorifiés et c'est la merde pour tout ce qui est analyse statique. (C'est possible de dérouler le spaghetti, mais ça rajoute une couche de complexité et comme personne ne programme comme ça en HPC de toute façon, ça n'est généralement pas implémenté dans les compilateurs.)

    Comme refs tu peux balancer tout l'évangile de l'église du Saint Modèle Polyédrique : http://polyhedral.info/
    Si ton tuteur te fais encore chier tu commences à lui parler des inégalités de Fourier-Motzkin et du Lemme de Farkas, il fera moins le malin.

  11. #9071
    Dites les canards (j'espère être au bon endroit)
    je sèche sur une solution qui pourrait m'embellir la vie. J'ai créé un pincab (flipper virtuel). Et je cherche à automatiser le lancement du jeu avec une map/table aléatoire (y'en a une cinquantaine sur le jeu)

    Est-il possible de créer un batch avec une cinquantaine de raccourci de ce style :
    "C:\Program Files (x86)\Steam\Steam.exe" -applaunch 226980 STARWARS_Droids
    "C:\Program Files (x86)\Steam\Steam.exe" -applaunch 226980 Tesla
    "C:\Program Files (x86)\Steam\Steam.exe" -applaunch 226980 Rome

    et d'en choisir un aléatoirement pour le lancer automatiquement ?!
    de façon à lancer le .bat, qui lance le jeu avec une table aléatoire. Ca serait top!

  12. #9072
    Tu peux essayer de t'inspirer de la solution proposé dans ce fil sur stackoverflow en l'adaptant légèrement

  13. #9073
    Avec Linux, j’ai une solution qui utilise rooldice et head (ou tail).
    une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
    Canard zizique : ?, , Φ, , ¤ , PL, 10h, , , , , , 💩, , 🎮, 🎸 𝄢 🎹, 🎼, , , blues, BO, , 👅, 👄, 🎻, 2, 80, 🎹, , , funk, fusion, 🎸, , 🏭, 🗻, 🎷, 🌴, 🍔, 💀 , noise, pop, , , $ $, , et ⚑, soul, , 🍄, (allez là si vous ne voyez pas les miquets)

  14. #9074
    Citation Envoyé par Møgluglu Voir le message
    La littérature dit ça plus ou moins en creux, parce que quasiment tous les papiers sur la parallélisation des 40 dernières années supposent des accès par indices à des tableaux Fortran ou C (statiques ou à la limite pointeurs restrict).
    Les itérateurs C++, c'est jamais que des pointeurs glorifiés et c'est la merde pour tout ce qui est analyse statique. (C'est possible de dérouler le spaghetti, mais ça rajoute une couche de complexité et comme personne ne programme comme ça en HPC de toute façon, ça n'est généralement pas implémenté dans les compilateurs.)
    Je pense que les modes d'adressage de la majorité de CPU sont bien biaisés pour que le construct pbase + i << n reste d'actualité un petit moment.
    Les itérateurs, ça peut servir pour la programmation générique, mais pour itérer sur des tableaux bof bof. Et en debug et sans inlining, merci l'overhead.
    It's the moped lads, they like to think they're bad
    It's the moped lads, if you hit 'em they'll tell their dads

  15. #9075
    C'est surtout que passer d'un for(i=0;i<n;i++) *(a+i<<3); à un for(p=a;p<a+n<<3;p+=8) *p;, c'est du simple loop-invariant hoisting + strength reduction qu'on sait faire depuis 40 ans et qui est dans tous les compilateurs à partir de -O1.
    Par contre, la transformation inverse qui consiste à reconstruire des accès par indices à partir d'une soupe de pointeurs, c'est une autre histoire...

  16. #9076
    Citation Envoyé par shazamic Voir le message
    Dites les canards (j'espère être au bon endroit)
    je sèche sur une solution qui pourrait m'embellir la vie. J'ai créé un pincab (flipper virtuel). Et je cherche à automatiser le lancement du jeu avec une map/table aléatoire (y'en a une cinquantaine sur le jeu)

    Est-il possible de créer un batch avec une cinquantaine de raccourci de ce style :
    "C:\Program Files (x86)\Steam\Steam.exe" -applaunch 226980 STARWARS_Droids
    "C:\Program Files (x86)\Steam\Steam.exe" -applaunch 226980 Tesla
    "C:\Program Files (x86)\Steam\Steam.exe" -applaunch 226980 Rome

    et d'en choisir un aléatoirement pour le lancer automatiquement ?!
    de façon à lancer le .bat, qui lance le jeu avec une table aléatoire. Ca serait top!
    On a trouvé la formule secrete ici ! : http://www.developpez.net/forums/d15...m/#post8698396

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •