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

Sortowanie wektora obiektów C++

Object Storage Arubacloud
0 głosów
744 wizyt
pytanie zadane 24 kwietnia 2022 w C i C++ przez Mavimix Dyskutant (8,390 p.)

Mam wektor obiektów. Każdy z tych obiektów ma 2 pola (których wartości się powtarzają) np.:

Klasa obj1 = Klasa(2,5);
Klasa obj2 = Klasa(2,4);
Klasa obj3 = Klasa(1,5);
Klasa obj4 = Klasa(3,2);

std::vector<Klasa*> wektor;

wektor.push_back(obj1);
wektor.push_back(obj2);
wektor.push_back(obj3);
wektor.push_back(obj4);

Chcę posortować wektor tak, aby najpierw był sortowany po 1. wartości, a potem wartości pola 1. które się powtarzają poukładał wg. pola 2. Kolejność wektora po sortowaniu:

1. obj3 //(1,5)
2. obj2 //(2,4)
3. obj1 //(2,5)
4. obj4 //(3,2)

Póki co napisałem taki kod:

std::vector<Klasa*> temp;
	Klasa* temp1;
	temp1 = wektor[0];
	
	for (int i = 0; i < wektor.size(); i++)
	{
		unsigned int wsc_org = wektor[i].x;
		unsigned int wsc_temp = temp1.x;

		if (wsc_org > wsc_temp)
		{
			temp1 = wektor[i];
			temp.insert(temp.begin(), temp1);
		}
		else {
			temp1 = wektor[i];
			temp.push_back(temp1);
		}
	}

Natomiast niekoniecznie on działa. Podsuniecie jakiś pomysł w jaki sposób posortować ten wektor?

1 odpowiedź

+2 głosów
odpowiedź 24 kwietnia 2022 przez TOM_CPP Pasjonat (22,640 p.)
wybrane 25 kwietnia 2022 przez Mavimix
 
Najlepsza

Natomiast niekoniecznie on działa

Nie tylko nie działa ale także się nie kompiluje.

Dlaczego używasz wskaźników? Wektor powinien w tym przypadku przechowywać obiekty typu Klasa.

Użyj std::sort do sortowania, implementując własny operator < - w którym zdefiniujesz sposób sortowania elementów typu Klasa np.

bool operator<( const Klasa& k )
{
    return x!=k.x?x<k.x:y<k.y;
}

 

Podobne pytania

0 głosów
2 odpowiedzi 1,957 wizyt
pytanie zadane 19 kwietnia 2015 w C i C++ przez criss Mędrzec (172,590 p.)
0 głosów
0 odpowiedzi 849 wizyt
pytanie zadane 20 lipca 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
2 odpowiedzi 670 wizyt
pytanie zadane 13 maja 2017 w C i C++ przez Ala123456 Użytkownik (760 p.)

92,535 zapytań

141,376 odpowiedzi

319,449 komentarzy

61,920 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!

...