Miten voi kopioida moniulotteisen taulukon?
taulukko
miten
8590
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 8
Vanhimmat
Tee ohjelmaasi silmukoita taulukon dimensioiden verran. Käy silmukassa indeksit läpi. Näin yksinkertaista se on.
int a[10][10][10], b[10][10][10];
memcpy(a, b, sizeof(int)*10*10*10);
Olettaen että sulla on esim. taulukot
int taulu1[20], taulu2[20];
TAPA 1.
int i;
for (i=0; i < 20; i )
taulu2[i] = taulu1[i];
TAPA 2.
memcpy(taulu2, taulu1, sizeof(int)*20);
TAPA 3.
tässä on toteuttettu inline assemblyllä oma memcpy, toteutuksen syntaksi toimii visual studiolla
inline void memcpy_oma(void *dest, void *src, int count)
{
_asm
{
mov edi, dest
mov esi, src
mov ecx, count
rep movsd
}
}
Käsittääkseni siis kirjastojen mukana tuleva memcpy käsittelee tietoa tavu kerrallaan, mutt yo. assembly juttu käsittelee tietoa 32 bittisenä, eli 4 tavuisena.
Joo en lukenut aluksi viestiäsi kunnolla, tässä korjaukset.
int taulu1[20][20][20], taulu2[20][20][20];
TAPA1.
int i,j,k;
for (i=0; i < 20; i )
for (j=0; j < 20; j )
for (k=0; k < 20; k )
taulu2[i][j][k] = taulu1[i][j][k];
TAPA2.
memcpy(taulu2, taulu1, sizeof(int)*20*20*20);
TAPA3.
Sama koodi
memcpy_oma(taulu2, taulu1, sizeof(int)*20*20*20);
int taulu1[20][20][20], taulu2[20][20][20];
memcpy(taulu2, taulu1, sizeof(taulu2));
...muut ovat B.S.
void *
memcpy(void *s1, const void *s2, register size_t n)
{
register char *p1 = s1;
register const char *p2 = s2;
if (n) {
n ;
while (--n > 0) {
*p1 = *p2 ;
}
}
return s1;
}
nt taulu1[20][20][20], taulu2[20][20][20];
memcpy(taulu2, taulu1, sizeof(taulu2));
Miksi ihmeessä pyörä pitäisi keksiä uudelleen?
Olet tainnut löytää perusfunktioiden sorsat jostain ja nyt esittelet kielitaitojasi (sekä suomen- että c-kielen).
memcpy on varattu nimi, eikä sitä pidä tietenkään käyttää oman funktion nimenä.
Missähän C-kirjastossa on noin surkeasti toteutettu memcpy?