• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

lista STL sortowanie

Object Storage Arubacloud
0 głosów
405 wizyt
pytanie zadane 8 lipca 2019 w C i C++ przez niezalogowany
edycja 8 lipca 2019

wektor mi sortuje a listy nie chce po polu struktury

  sort(vector_x.begin(),vector_x.end(),compare_x()); // vector STL 
   sort(lista_x.begin(),lista_x.end(),compare_x()); // List STL 

czy musi być class compare funkcja z iteratorem?

W czym problem. Jeden z błędów kompilatora :

\c++\bits\stl_algo.h|1964|error:
 no match for 'operator-'
(operand types are 'std::_List_iterator<punkt>' and
'std::_List_iterator<punkt>')|

czy musi być class compare funkcja z iteratorem?

komentarz 8 lipca 2019 przez criss Mędrzec (172,590 p.)
więcej kodu daj. Chociażby czym jest lista_x, punkt i compare_x
komentarz 8 lipca 2019 przez niezalogowany
struct compare_x {
    inline bool operator() (const punkt& struct1, const punkt& struct2) {
        return (struct1.x <struct2.x);
    }

struct punkt {int x, int y};

tak dla listy próbowałem ale się burzy kompilator  return (struct1->x <struct2->x); zamiast referencji wskaźnik?

2 odpowiedzi

0 głosów
odpowiedź 8 lipca 2019 przez niezalogowany
wybrane 8 lipca 2019
 
Najlepsza

std::sort wymaga iteratorów z dostępem swobodnym. Rozwiązanie problemu: link1

lista_x.sort(compare_x());
komentarz 8 lipca 2019 przez niezalogowany
dzięki cały wieczór się na ta stronę gapiłem, ach szkoda pisać.
komentarz 8 lipca 2019 przez niezalogowany
edycja 8 lipca 2019

szybciej tak:
 

struct compare_x {
    inline bool operator() (const punkt& struct1, const punkt& struct2) {
        return (struct1.x ==struct2.x)?  (struct1.y <struct2.y): (struct1.x <struct2.x);
    }
};



czy jeszcze raz posortować

lista_x.sort(compare_x_rowne() );

komentarz 8 lipca 2019 przez niezalogowany
Od razu tak posortuj. Możesz też użyć std::tie.
komentarz 8 lipca 2019 przez niezalogowany
a próbowałem podobne błędy mi wychodziły i na razie nie będę rozkminiał. Mi to drugie porównanie nie jest mi potrzebne. Porostu będzie jednej metody mniej później w kodzie. A sorki za ta edycję zawsze to jedna linia kodu mniej i dzięki za odpowiedz.
0 głosów
odpowiedź 8 lipca 2019 przez criss Mędrzec (172,590 p.)

std::sort służy tylko do iteratorów spełniających https://en.cppreference.com/w/cpp/named_req/RandomAccessIterator

Uzyj std::list::sort

komentarz 8 lipca 2019 przez niezalogowany
dzięki

Podobne pytania

0 głosów
1 odpowiedź 349 wizyt
pytanie zadane 29 marca 2017 w C i C++ przez krzakurts Obywatel (1,470 p.)
0 głosów
1 odpowiedź 451 wizyt
pytanie zadane 27 marca 2017 w C i C++ przez krzakurts Obywatel (1,470 p.)
+6 głosów
2 odpowiedzi 265 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...