erase/replace med "" (ingen ting)

Tags:    c++

Hej igen

ja jeg er løbet ind i endnu et problem :P

Jeg har to vectorer, og jeg skal undersøge om dataen i den ene findes i den anden.

Indtil vidre har jeg bixet noget ligende det her sammen ->
Fold kodeboks ind/udKode 

Hvor den tager den første rubrik(?) i vectoren som den skal checke fra, og hvis den er lig med den anden, så skal den increase den pointer der styre den vector som bliver checket (k++). Men hvis så de ikke er lig med hinanden skal det kun increase den der styre pointeren for den vector der checker (i++)

Dog er der et lille problem. Hvis det den skal checke om eksistere i den anden vector, ikke findes overhoved bliver den ved med at sige at resten er usandt netop pga den pointer der checker den ancen vector ikke findes ->

Fold kodeboks ind/udKode 


Jeg har så tænkt på at først kunne den gennemgå den ene vectore (den der undersøger den anden) om der var noget i den der ikke eksisterede i den anden, og så slette/replace med "" problemet er bare at jeg kan simpelthen ikke fatte hvordan erase/replace virker?? Lige meget hvad jeg gør er det forkert :S

Så det jeg søger hjælp til er

1. hvordan dælen fortæller man den at den skal slette felt watch[k] uden at den brokker sig over et eller andet

2. Findes der evt. en hurtigere, smartere og lettere måde end den jeg har rodet mig ud i?

3. Hvis jeg bruger erase vil det så ikke ødelægge pointerne? altså hvis der er test[0] = hm, test[1] = hmm, test[2] = hmmm
og man så sletter test[1]
test[0] = hm, test[1] = hmmm
hvis du forstår



Indlæg senest redigeret d. 03.05.2007 23:12 af Bruger #11701
Hej igen

ja jeg er løbet ind i endnu et problem :P

Jeg har to vectorer, og jeg skal undersøge om dataen i den ene findes i den anden.

Indtil vidre har jeg bixet noget ligende det her sammen ->
Fold kodeboks ind/udKode 

Hvor den tager den første rubrik(?) i vectoren som den skal checke fra, og hvis den er lig med den anden, så skal den increase den pointer der styre den vector som bliver checket (k++). Men hvis så de ikke er lig med hinanden skal det kun increase den der styre pointeren for den vector der checker (i++)

Dog er der et lille problem. Hvis det den skal checke om eksistere i den anden vector, ikke findes overhoved bliver den ved med at sige at resten er usandt netop pga den pointer der checker den ancen vector ikke findes ->

Fold kodeboks ind/udKode 


Jeg har så tænkt på at først kunne den gennemgå den ene vectore (den der undersøger den anden) om der var noget i den der ikke eksisterede i den anden, og så slette/replace med "" problemet er bare at jeg kan simpelthen ikke fatte hvordan erase/replace virker?? Lige meget hvad jeg gør er det forkert :S

Så det jeg søger hjælp til er

1. hvordan dælen fortæller man den at den skal slette felt watch[k] uden at den brokker sig over et eller andet

2. Findes der evt. en hurtigere, smartere og lettere måde end den jeg har rodet mig ud i?

3. Hvis jeg bruger erase vil det så ikke ødelægge pointerne? altså hvis der er test[0] = hm, test[1] = hmm, test[2] = hmmm
og man så sletter test[1]
test[0] = hm, test[1] = hmmm
hvis du forstår


Løbende udtagning og indsætning i en vector struktur er ikke specielt hurtigt. Jeg ville sætte et flag på dataene og ryd op til sidst.

class MyItem
{
public:
bool bDeleted; // slette-flag
char* szMyData;
bool operator==(const MyItem& other);
}

Hth




Indlæg senest redigeret d. 15.05.2007 18:10 af Bruger #10448
t