•filipb
|
|
« : 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: ............ 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
|
|
« 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 .
|
|
« 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
|
|
« 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 .
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« 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
|
|
« 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
|
|
« Răspunde #5 : Noiembrie 19, 2007, 20:54:52 » |
|
Ai putea sa faci un hash mic . 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
|
|
« 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
|
|
« 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
|
|
« 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
|
|
« Răspunde #9 : Noiembrie 20, 2007, 08:46:47 » |
|
Parca nu ai map pe long long in C++.
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« Răspunde #10 : Noiembrie 20, 2007, 10:40:55 » |
|
Ba da, ai .
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•Cosmin
|
|
« Răspunde #11 : Noiembrie 20, 2007, 11:09:27 » |
|
Pai si nu tre sa implementezi tu functie de hashing pt long long?
|
|
|
Memorat
|
|
|
|
•stef2n
|
|
« 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
|
|
« Răspunde #13 : Noiembrie 20, 2007, 11:25:13 » |
|
Bleah, da ai dreptate, eu ma gandeam la hash_map de obicei asta inteleg prin map.
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« 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
|
|
« 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
|
|
|
|
|