# [c++] Felder



## asorulez (28. November 2006)

Hallo, 
und zwar folgendes Problem: 
Es werden Felder mit Binärwerten belegt und es müssen zwischen drin bestimmte Felder gelöscht werden. Nicht der Wert geändert sondern gelöscht und die anderen Felder sollen dann nachrücken. 
Nehmen wir einmal an es sind 128 Felder und Feld 66 und 89 sollen gelöscht werden. Die anderen Felder sollen dann nachrücken (Feld 67 nimmt dann den Platz von 66 ein, und so weiter...) 

Wie stell ich so was an

Vielen Dank fürs helfen...


----------



## deepthroat (28. November 2006)

Hi.

Du mußt die Elemente verschieben. Dazu benutzt man normalerweise die Funktion memmove oder in C++ den copy oder copy_n Algorithmus.

Bsp:
	
	
	



```
#include <algorithm>

using namespace std;
...
  int x[] = {0, 1, 2, 3, 4, 5};
  const int x_length = sizeof(x) / sizeof(*x);

  // alle Elemente von x[2] bis x[n] um eine Stelle nach links kopieren.
  copy(x + 2, x + x_length, x + 1);
...
```
Gruß


----------



## asorulez (28. November 2006)

Anscheinend habe ich meine Frage schlecht formuliert! Sry

Ich werde das jetzt in einem konkreten bsp schildern:

Es kommen eine Reihe von Daten daher (Hexzahlen oder Binärzahlen / is noch nicht klar) und jeder 5te Datensatz sagt mir, welcher von der vorigen Werten in ein Feld geschrieben wird. Das könne alle sein aber auch gar keiner.....
Die Werte die ich brauche kommen dann in ein Feld. Nicht jeder Wert extra, sondern alle in eins.

Ich hoffe das ich das verständlich formuliert habe. Ich bin für jede Hilfe sehr dankbar!

mfg aso


----------



## deepthroat (28. November 2006)

asorulez hat gesagt.:


> Ich hoffe das ich das verständlich formuliert habe.


Nein, leider nicht. 



asorulez hat gesagt.:


> Ich werde das jetzt in einem konkreten bsp schildern:


Ein konkretes Beispiel war das leider auch nicht. 



asorulez hat gesagt.:


> Es kommen eine Reihe von Daten daher (Hexzahlen oder Binärzahlen / is noch nicht klar) und jeder 5te Datensatz sagt mir, welcher von der vorigen Werten in ein Feld geschrieben wird. Das könne alle sein aber auch gar keiner.....


Wenn du vorher nicht weißt wieviel Werte das werden, ist ein Feld relativ schlecht geeignet dafür - evtl. solltest du lieber eine Liste verwenden. Da wäre auch das Löschen von Elementen viel einfacher.



asorulez hat gesagt.:


> Die Werte die ich brauche kommen dann in ein Feld. Nicht jeder Wert extra, sondern alle in eins.


Was du damit meinst weiß ich auch nicht. 

Gruß


----------



## asorulez (28. November 2006)

Es kommen 16 Blöcke mit jeweils 8 Bit. Durch den 5ten Block weiß ich dann bescheid welche der vorher gesendeten Blöcke weiter verwendet wird. Und die Zahlen die ich weiter verwende sollen dann in ein Feld geschrieben werden....

Ich weiß nicht mal mit welchem Befehl / Befehlen ich das bewerkstelligen soll. Daher wäre es auch schon super wenn ich mir in die Richtung einen Tipp geben könnten oder mir sogar sagen könntet welcher Befehl / Befehle...

Vielen Dank


----------



## LukeS (28. November 2006)

Ich versthe zwar dein Problem nicht ganz.
Aber hier ein paar Tips:
Ich würde zuerst alle 16 Blöcke (Bytes) in einem Buffer-Array speichern. Dann erst die herauslesen, die du brauchst und in einem Endgültigen Array speichern.

Es gibt bestimmt elegantere Wege. Zum Beispiel kanst du deine Blöcke in einer Liste speichern und diejenigen, die du nicht mehr brauchst herauslöschen.

Am besten gibst uns ein Beispiel, wie deine Datenblöcke vorliegen und wie man im Code darauf zugreifen kann.

Gruss LukeS


----------



## asorulez (3. Dezember 2006)

Es würde mir sehr weiterhelfen, wenn ihr mir sagen könnt was ihr nicht versteht.
Des Weiteren wäre es auch toll wenn ihr mit die Befehlsstruktur von den jeweiligen Befehlen schreiben könntet oder vielleicht ein paar hilfreiche Links.

Vielen Dank


----------

