🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #60479

Re: [c++] kopiowanie tablic

#60479
From: M(dot)Kedzierawski
Date: Tue, 15 Nov 2005 19:26
41 lines
2766 bytes
> I teraz chciałbym przekopiować całą zawartość tablicy a do b. Nie chcę
> jednak korzystać z pętli (musiałbym zastosować kilkadziesiąt pętli).
> Nie dałoby się tego jakoś zrobić przy pomocy wskaźników? Rozmiary są te
> same, więc de facto chodzi jedynie o zamianę adresu tablicy b na tablicę
> a (tablica a już nie będzie mi potrzebna).

Troche się chyba zakręciłeś, bo jak chcesz, żeby b wskazywało na a, to 
to a jak najbardziej będzie ci potrzebne (to tablica wskazywana przez b 
nie będzie już potrzebna jak już).

Pomijająć powyższe:

Jeżeli masz te tablice na stercie, a nie stosie, to tak właśnie możesz 
zrobić:

delete [] b; //jeżeli już wogóle nie będzie potrzebna w programie
b = a;

Jeżeli masz na stosie, to nie da rady - bez pętli się nie obędzie. 
Jeżeli nie przechowujesz tam jakichś struktur danych ze wskaźnikami, to 
możesz skorzystać z memcpy (wewnątrz jej jednak jest pętla).

Ew. w zależności od tego, jak w całości wygląda twój program, możesz 
mieć te tablice i na stosie, ale operować na nich za pomocą wskaźników 
zadeklarowanych "dodatkowo" i wskazujących na pierwszy element takiej 
tablicy. Wtedy też możesz sobie zrobić jak powyżej, ale tablicy 'a' nie 
możesz sobie ot tak zwolnić, tylko zostanie ona zwolniona, przy wyjściu 
z funkjci, w której ją zadeklarowano jako lokalną.

A, no i dochodzi problem, jeżeli w innych miejscach programu porobiłeś 
sobie kopie wskaźnika na b. Po zwolnieniu b i wpisaniu tam a, albo z 
tamych kopii nie należy korzystać, albo trzeba je (jakoś) uaktualnić.

uff, to tyle :)

-- 
Mariusz Kędzierawski
+---------------------------------------------------------+
Z całym światem (w końcu) MOŻESZ wygrać.
Z sobą (ostatecznie) ZAWSZE przegrasz.
+---------------------------------------------------------+
Technical Details
Message-ID: <dldcnr$ebu$1@julia.coi.pw.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!uw.edu.pl!news.pw.edu.pl!not-for-mail
References: <rhwhdadohut.fsf@jj.jj>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!uw.edu.pl!news.pw.edu.pl!not-for-mail
From: "M(dot)Kedzierawski"@elka.pw.edu.pl
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: [c++] kopiowanie tablic
Date: Tue, 15 Nov 2005 20:26:07 +0100
Organization: Warsaw University of Technology
Lines: 41
Message-ID: <dldcnr$ebu$1@julia.coi.pw.edu.pl>
References: <rhwhdadohut.fsf@jj.jj>
NNTP-Posting-Host: helios.riviera.pw.edu.pl
Mime-Version: 1.0
X-Trace: julia.coi.pw.edu.pl 1132082747 14718 10.1.102.56 (15 Nov 2005 19:25:47 GMT)
X-Complaints-To: usenet@pw.edu.pl
NNTP-Posting-Date: Tue, 15 Nov 2005 19:25:47 +0000 (UTC)
In-Reply-To: <rhwhdadohut.fsf@jj.jj>
X-Accept-Language: en-us, en
User-Agent: Mozilla Thunderbird 1.0 (X11/20050319)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit