Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: map  (Citit de 2800 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
filipb
Nu mai tace
*****

Karma: 232
Deconectat Deconectat

Mesaje: 929



Vezi Profilul
map
« : Noiembrie 19, 2007, 20:37:07 »

Daca stie cineva si ma poate ajuta:

Cum se tine un array intr-un map? Array-ul as vrea sa fie un tip definit de mine. Am incercat ceva de genul:

Cod:
............
typedef int matrice[4][4];

map<matrice, int> M;
matrice X;

............
M[X] = 1;


Am incercat sa introduc si un operator de comparare intre doua elemente matrice, dar imi spune ca matrice trebuie sa fie clasa. Stie cineva cum pot sa rezolv?
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #1 : Noiembrie 19, 2007, 20:46:47 »

infoarena nu incurajeaza postarea temelor pe forum =))

E chiar necesar sa ai array? Nu merge cu vector <vector<int> > ?

Incearca pe sgi, poate gasesti ceva. Acum citesc si eu, sa vedem Smile.
« Ultima modificare: Noiembrie 19, 2007, 20:50:10 de către Andrei Grigorean » Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
filipb
Nu mai tace
*****

Karma: 232
Deconectat Deconectat

Mesaje: 929



Vezi Profilul
« Răspunde #2 : Noiembrie 19, 2007, 20:49:32 »

Merge, insa voiam sa am control absolut pe ce e implementat de mine. Cu vector<vector<int>> imi da SIGKILL de exemplu Rolling on the Floor Laughing.
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #3 : Noiembrie 19, 2007, 20:51:23 »

Nu are cum sa iti bage intr-un map niste chestii pe care nu le poate compara. Presupun ca trebuie sa iti creezi tu o clasa, etc.

Apropo, ce vrei sa rezolvi?
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
filipb
Nu mai tace
*****

Karma: 232
Deconectat Deconectat

Mesaje: 929



Vezi Profilul
« Răspunde #4 : Noiembrie 19, 2007, 20:52:57 »

4x4 puzzle. Voiam sa pornesc de la configuratia initiala si sa expandez starile alea ( o prima idee pentru inceput ). Ca sa verific daca un tablou era pus deja in coada voiam sa folosesc map.
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #5 : Noiembrie 19, 2007, 20:54:52 »

Ai putea sa faci un hash mic Smile. Oricum mapurile astea folosesc multa memorie si daca vrei sa faci un branch and bound mai mare se duce in cap.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Prostu
Nu mai tace
*****

Karma: 134
Deconectat Deconectat

Mesaje: 323



Vezi Profilul
« Răspunde #6 : Noiembrie 19, 2007, 20:57:27 »

Nu prea poti sa implementezi cu typedef int matrice[4][4] pentru ca nu ai un constructor de copiere, si nu poti sa-l redefinesti pentru un pointer. Degeaba folosesti o functie de comparare.
Implementeaza matrice ca o clasa sau un struct.
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #7 : Noiembrie 19, 2007, 21:04:48 »

Eu daca am nevoie de asa ceva rapid, fac o reprezentare pe string si apoi folosesc stringuri ca chei.
Memorat
fluffy
Echipa infoarena
De-al casei
*****

Karma: 71
Deconectat Deconectat

Mesaje: 146



Vezi Profilul
« Răspunde #8 : Noiembrie 20, 2007, 06:27:13 »

Un numar intra 0 si 16 poate fi bagat in jumatate de byte; iar 16 numere incap foarte frumos in (16 * 4) = 64 biti. Poti sa encodezi destul de simplu si rapid starea puzzle-ului intr-un long long si sa pui long long in map. BTW, sigur nu vrei set?

Alternativ iti faci un struct si implementezi operator de comparare pe struct. Un typedef aici nu ajunge, array-urile au semnificatii dubioase cand sunt puse ca parametri.
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #9 : Noiembrie 20, 2007, 08:46:47 »

Parca nu ai map pe long long in C++.
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #10 : Noiembrie 20, 2007, 10:40:55 »

Ba da, ai Smile.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #11 : Noiembrie 20, 2007, 11:09:27 »

Pai si nu tre sa implementezi tu functie de hashing pt long long?
Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #12 : Noiembrie 20, 2007, 11:16:30 »

Pentru map trebuie doar o functie de comparare stricta. Iar pentru long long e built-in.
Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #13 : Noiembrie 20, 2007, 11:25:13 »

Bleah, da ai dreptate, eu ma gandeam la hash_map Smile de obicei asta inteleg prin map.
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #14 : Noiembrie 20, 2007, 11:27:36 »

Hash_map parca nu era standard g++, nu?
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #15 : Noiembrie 20, 2007, 11:29:20 »

Parca vor sa o bage in standard, si o gasesti cam pe toate compilatoarele folosite in concursuri.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines