Kezdőoldal » Számítástechnika » Programozás » C++ Template, tömb és pointer...

C++ Template, tömb és pointer probléma?

Figyelt kérdés

Nos adott az alábbi feladat:

data.hu/get/11879699/kod.txt


És a hozzá írt header fájlom:

data.hu/get/11879700/header.txt


A probléma a következő lenne:


A feladat azt kéri, hogy töröljem egy generikus osztály konstruktorában megadott paraméter minden előfordulását az eredeti tömb-ből. De tudtommal ez c++-ban nem lehetséges, mert az inicializálásnál lefoglalt memóriaterületet már nem módosíthatom(tehát a méretét). Ezt megpróbáltam pointerekkel orvosolni, de így is csak az elemek sorrendjét tudom variálni, ami az egyik részfeltételnél szintén nem jó megoldás. Ezt hogyan lehetne helyesen megoldani? Előre is köszönöm a segítséget!



2019. jún. 16. 02:01
 1/3 A kérdező kommentje:
Elnézést, hogy ilyen balfa**ul töltöttem fel, a kod.txt nyilván a main.cpp, a header.txt meg az arerase.h fájl akarna lenni, késő van már. :')
2019. jún. 16. 02:05
 2/3 anonim ***** válasza:

A kódot nem néztem (valami forráskódmegosztó oldalt használj pls!) de a feladatleírásod alapján itt egy megoldás:

Megszámolod a megadott elem előfordulását a tömbben majd létrehozol egy új megfelelő méretű tömböt és minden elemet átmásolsz. Ezután átállítod a mutatót az új tömbre.

2019. jún. 16. 08:05
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:

Oh, egy CPP vizsga :D

Ahogy nézem, nem az eredeti tömbből (ami a main-en belül van deklarálva) kell törölnöd, hanem az array_eraser objektumodban tárolt tömbből, ahogy nézem, a feladat kifejezetten azt akarja, hogy az eredeti tömb ne változzon. Innentől tehát a konstruktorban csak lemásolod az eredeti tömböt, és onnantól azzal azt csinálsz amit akarsz. Ha törölni akarsz belőle, azt jellemzően úgy tudod megcsinálni, hogy lefoglalsz egy új tömböt az új mérettel, abba átpakolod a még meglevő elemeket, és beállítod annak a pointerét az objektumodban (az előzőt ne felejtsd el felszabadítani delete-el). Alternatíva, hogy a törölt elemeket hátrarendezed a tömb végére, és a sizem értékét átállítod ennek megfelelően. Ezzel megspórolod az új tömb lefoglalását, cserébe kell néhány swap műveletet végezni.

2019. jún. 16. 08:27
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!