rechteckspeicher aus einem array koppieren
-
Hallo,
kennt jemand eine effiziente Möglichkeit ein rechteckiges subarray aus einem array zu kopieren?
sieht in etwa so aus:
Array:
---------------------------
| ------ |
| | | |
| | X | |
| | | |
| ------- |
| |
--------------------------will jetzt x rauskopieren, aber fällt nichts vernünftiges ein.
Vielen Dank
-
sorry, anscheind werden ascii zeichnungen komisch dargestellt, ich poste ein bessere bild.
-
Hier ist die zeichnung:
-
Mit For-Schleifen gehts recht einfach.
-
Hier ein Beispiel:
#include <iostream> using namespace std; int main() { int A[10][10]; int B[3][4]; //Zeugs reinschieben for(int i = 0; i < 10; i++) { for(int y = 0; y < 10; y++) { A[i][y] = i + y; if (A[i][y] < 10) cout << " "; cout << A[i][y] << " "; } cout << endl; } cout << endl; //Zeugs rausholen for(int i = 0; i < 3; i++) { for(int y = 0; y < 4; y++) { B[i][y] = A[i + 5][y + 2]; if (B[i][y] < 10) cout << " "; cout << B[i][y] << " "; } cout << endl; } cin.get(); cin.get(); return 0; }
-
willknow schrieb:
..effiziente Möglichkeit..
Du könntest dir die Speicheradresse des ersten zu kopierenden Wertes holen, und den "Offset" zur nächsten "Zeile" berechnen.
Jetzt kann in einer einfachen Schleife zeilenweise mit memcpy gearbeitet und der Pointer jeweils um den berechneten Wert erhöht werden.
-
Schau dir mal auf sourceforge die ltilib an. Da wird das mit den Matrix Klassen der Lib gemacht.