WinFuture-Forum.de: Teil Aus Void* Array Entfernen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Teil Aus Void* Array Entfernen C++


#1 _Fenix_

  • Gruppe: Gäste

geschrieben 18. Oktober 2004 - 17:18

Hallo.
Ich muss nen Teil aus einem Array mit beliebigen Datentyp entfernen (deshalb Void).
Kann mit jemand sagen, wie ich das machen soll?

Bin bis jetzt so weit:
void killarr(void** array,unsigned int pos, size_t elementsize, size_t arraysize) {
	
	void* tmparr = calloc( (arraysize / elementsize)-1, elementsize);
	tmparr = memmove(tmparr, array, (pos-1) * elementsize);
	


}


Als Idee zum weiter proggen hatte ich, das übergebene array rumzudrehen und die daten die dann zu erst stehen ins tmparr zu kopieren. Nur wie dreht man ein Void* rum?

In Char oder Int wollte ich das ganze nicht so unbedingt konvertieren, weil dabei ja je nach Datentyp vom Array mist rauskommen kann...

Danke für die Antworten!

*Noch ein nettes lied dazu:
If void* had an pointer
void* would point in to the correct element
void* would point day and night
- Wenns jetzt noch witzig wär, wäre der Thread gut :rolleyes:
*

Dieser Beitrag wurde von Fenix bearbeitet: 18. Oktober 2004 - 17:23

0

Anzeige



#2 _Fenix_

  • Gruppe: Gäste

geschrieben 19. Oktober 2004 - 18:15

void arrrm(void** array, unsigned int pos, size_t elsize, size_t arrsize) {



	char* upper = (char*)malloc(sizeof(char)*(arrsize-(pos*elsize)));
	upper = (char*)*array + (pos*elsize);
	
	memmove(upper, upper + elsize, arrsize-(pos+1)*elsize);

	*array = realloc(*array, arrsize-elsize);
	
	return;

	
}


-> War die Lösung
0

#3 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.795
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 23. Oktober 2004 - 11:45

wenn du oft elemente löschen musst, wäre vielleicht eine verkettete liste effektiver? kommt ganz auf das einsatzgebiet an ... bei großem datenmängen wär ein hash-verfahren+b-baum oder isam vielleicht ganz interessant? wenn du mehr infos möchtest, sag bescheid.
I'm mó. mo's good twin.
0

#4 Mitglied ist offline   Dimension 

  • Gruppe: aktive Mitglieder
  • Beiträge: 772
  • Beigetreten: 17. November 03
  • Reputation: 0

geschrieben 23. Oktober 2004 - 18:55

Zitat (mo: 23.10.2004, 12:45)

bei großem datenmängen wär ein hash-verfahren+b-baum oder isam vielleicht ganz interessant? wenn du mehr infos möchtest, sag bescheid.
<{POST_SNAPBACK}>


Ich bin zwar nicht Fenix, aber trotzdem daran interessiert, besonders an effizienten Beispielcodes :( Für was steht denn isam?

Für einen Array wäre vllt auch eine mehrschichtige Ausführung brauchbar, so was lässt sich in relativ wenig Code erledigen (meine Implementation hat 187 Zeilen) und Einfügen, Entfernen und Auflösen laufen in konstanter Zeit. Mit weiteren Optimierungen kriegt man auch die Enumerationszeit runter.

Dieser Beitrag wurde von Dimension bearbeitet: 23. Oktober 2004 - 19:08

0

#5 Mitglied ist offline   stefanra 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.199
  • Beigetreten: 13. September 04
  • Reputation: 1

geschrieben 23. Oktober 2004 - 19:01

ISAM = Indexed Sequential Access Method
0

#6 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 23. Oktober 2004 - 22:26

@Dimension: In einem einfachen AVL-Baum hast du für sämtliche wichtigen operationen stets nur logarithmischen Aufwand.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#7 Mitglied ist offline   Dimension 

  • Gruppe: aktive Mitglieder
  • Beiträge: 772
  • Beigetreten: 17. November 03
  • Reputation: 0

geschrieben 23. Oktober 2004 - 22:56

Zitat (Rika: 23.10.2004, 23:26)

@Dimension: In einem einfachen AVL-Baum hast du für sämtliche wichtigen operationen stets nur logarithmischen Aufwand.
<{POST_SNAPBACK}>

Schon, aber bei grossen Datenmengen, auf die oft zugegriffen wird (z.B. Handletabellen) kann es doch noch etwas ausmachen, ob der Aufwand logarithmisch oder konstant ist (der dymamische Array braucht für ein Lookup nur ~25 Assembler-Instruktionen, unabhängig ob 1 oder 2^bitsof(ulong) Einträge vorhanden sind). Und mit dem Baum brauchts entweder ein zusätzliches Bitmap (welches wieder auf realloc() angewiesen ist) oder die Handles werden einfach immer grösser. :blush:

Dieser Beitrag wurde von Dimension bearbeitet: 23. Oktober 2004 - 23:15

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0