Új hozzászólás Aktív témák
-
PandaMonium
őstag
válasz
m.zmrzlina
#3905
üzenetére
Ettől általánosabb ha ahogy javasolták is, funktorokat használsz.
bool novekvo(float elso, float masodik)
{
return elso < masodik;
}
int cseres(float tomb[],int meret, const std::function<bool(float, float)>& feltetel)
{
float temp=0;
for (int i=0;i<meret-1;i++)
{
for (int j=i+1;j<meret;j++)
{
if(feltetel(tomb[j], tomb[i]))
{
temp=tomb[i];
tomb[i]=tomb[j];
tomb[j]=temp;
}
}
}
return 0;
}Itt a cseres függvény harmadik paramétere egy olyan funktor ami bool visszatérési értékű, és két float paramétert fogad. Ilyen pl. a novekvo függvény ami felette van definiálva. Tehát az a függvény hívás, hogy
cseres(tombom, tombom_merete, novekvo);teljesen valid.
Pár megjegyzés még, mert írtad, hogy most tanulod a nyelvet:
- C stílusú (float[], int[], stb.) tömböket ne használj, akkor sem ha ezt látod tutorialokban vagy ezt oktatják egyetemen. Modern C++ban ha folytonosan szeretnénk tárolni valamit a memóriában (ahogy a tömb is semmi más mint egy folytonosan allokált memóriaterület) és fordítás időben (azaz a program írásakor, nem futtatáskor) tudjuk mekkora tömb kell nekünk akkor std::array-t használunk, egyébként, ha dinamikus méretű tömbre van szükségünk akkor std::vector -t.
- Jelenleg a kódod csak egy adott típusú tömbre (float) fog működni. Ha template függvényt csinálsz belőle kirakhatod ezt a típust template paraméterbe és akármilyen típusra fog működni - itt persze feltétel lesz, hogy a funktor is ennek a típusnak két példányát fogja fogadni.
- Nincsen kőbe vésve, de konvenció, hogy ha egy konténer két elemét hasonlítjuk össze akkor az az elem kerül az összehasonlítás bal oldalára ami előrébb van a konténerben. Ennek egy logikai összehasonlításkor nincs sok jelentősége, mert legfeljebb megfordítod az operátort (
(a > b) == (b < a)), de pl. ha funktoroknak adod át a paramétereket akkor fontos, hogy a funktor milyen sorrendben várja az elemeket.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Linux kezdőknek
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Apple Watch
- HDD probléma (nem adatmentés)
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Kínai és egyéb olcsó órák topikja
- Formula-1
- BMW topik
- Így kezdődik a Vampire: The Masquerade - Bloodlines 2
- Nikon DSLR topik
- További aktív témák...
- HP EliteBook x360 830 G8 i7 / 32GB RAM / 512GB SSD / Érintőkijelző / 2in1 Prémium üzleti laptop!
- GIGABYTE GeForce RTX 3060 Ti EAGLE OC 8GB
- HP EliteBook 840 G11 Ultra 7 / 16GB RAM / 512GB SSD / FHD+ IPS / Garancia 2027-ig!
- Alienware m15 R5 gamer laptop, Ryzen 9 5900HX, RTX 3070, karcmentes, 360Hz!
- Lenovo ThinkPad P15s Gen 1 i7 / 32GB RAM / 512GB SSD / NVIDIA Quadro P520
- ÁRGARANCIA!Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Acer Nitro 5 AN515 I7 9 gen 32 gb 1650
- Samsung Galaxy S23 Ultra / 8RAM 256GB / Gyárifüggetlen / 12 Hó Garancia
- Xiaomi 11T Pro 256GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone XR / 128GB / Kártyafüggetlen / 12Hó Garancia / 95% akku
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest

