K.....1
K.....1
#programowanie #cpp #gamedev #programowaniegrafiki Mireczki, postanowiłem pierwszy raz w zyciu użyć std::map, czyli mamy klucz i wartosć.. i pytanie, jak zrobić bardziej złożony klucz, tzn. zeby to nie byla jedna wartosc, ale np. złożona z dwóch wartości, chcę żeby moim kluczem była para numerów np. (1,2) to ma byc to samo co (2,1), probowalem to zaszyc w typie long w ten sposób, ale kopilator zwrca błac ze 32 to za dużo:

bool firstIsSmaller = p1 < p2;
long smallerIndex = firstIsSmaller ? p1 : p2;
long greaterIndex = firstIsSmaller ? p2 : p1;
long key = (smallerIndex << 32) + greaterIndex;
  • Najlepsze
  • Wszystkie komentarze
SirSajko
SirSajko
@Kopytko1 poczytaj o tuple, krotkach, albo wyszukaj: std::map with integer tuple as key
SirSajko
SirSajko
@Kopytko1 poczytałem sam i std::tuple daje rade, ma nawet wszystkie operatory przeciazone które trzeba :)
K.....1
K.....1
std::map with integer tuple as key


@SirSajko: bardzo ciekawe, dzieki, zaraz to obczaje
AnastaZIuk
@SirSajko: ciekawostka na temat semantyki, operator czy nazwę funkcji się przeładowywuje, a nie przeciąża :D
SirSajko
SirSajko
@AnastaZIuk prawda jednak że te sformułowania w polskiej terminologii programowania stosuje się zamiennie, w dodatku znaczą też po polsku to samo
AnastaZIuk
@SirSajko: racja, używa się u nas tego zamiennie, ale jednak przeładowywuje się znaczenie, a warto zwrócić uwagę, że w różnych literaturach pisze się o "overload" - przeładować, po francusku piszą "recharger", co ma podobne znaczenie, ale wciąż nie przeciążyć, a po niem "uberladen", też przeładować