Mi a probléma? Hogy lehetne helyesen megcsinálni?
char* unique(char* first, char* last) {
if (first == last)
return last;
char* result = first;
while (++first != last) {
if (*result == *first)
continue;
if (++result != first) {
*result = std::move(*first);
}
}
return ++result;
}
A hiba amit kiír:
In function ‘char* sajat::unique(char*, char*)’:
error: ‘move’ is not a member of ‘std’
*result = std::move(*first);
Itt a feladat leírás:
A paraméterként kapott két pointer közötti karaktersorozatból kihagyja az egymás után ismétlődő karaktereket (char). A sorozatot az eredeti helyén hagyja!
first - pointer az adatok kezdetére
last - pointer, ami az utolsó adat után mutat
return - pointer, ami az új sorozat utolsó adata után mutat (a kihagyással rövidült a sorozat)
Vagy ha nem így, hogy lenne érdemes neki ugrani a feladatnak.
(BME 3. heti prog beugrónak egy feladatrésze. Egyéb 4 függvény amit csinálni kellett már kész, szóval nem itt próbálom megcsináltatni a "házimat")
A hibaüzenet azért van, mert a compiler nem tud a move függvény létezéséről. Ez azt jelenti, hogy nem include-oltad be a megfelelő könyvtárakat. Ilyenkor egyszerűen rákereshetsz neten a move függvényre és megnézed, melyik könyvtárban van. Pl.: itt [link] azt írja, hogy "defined in header <utility>", azaz egyszerűen azt írod be, hogy #include <utility>" és már el is tűnik ez a hiba.
Magában az algoritmusban is van egy kis hiba, mert a lezáró nullát nem rakod át. Ezt úgy orvosolhatod, hogy a while ciklusban átírod a ++first-öt first++-ra.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!