Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

kopiowanie tablicy wielowymiarowej

Ostatnio zmodyfikowano 2015-06-23 19:43
Autor Wiadomość
Anim
Temat założony przez niniejszego użytkownika
kopiowanie tablicy wielowymiarowej
» 2015-06-23 13:43:31
Cześć :) Mam pytanie , jak w tytule, jak można kopiować tablice dwuwymiarową l na k do kontenera? chciałbym skorzystać z funkcji copy...Czy poniższy zapis jest poprawny ?

C/C++
l = rows;
k = columns;
for( int i = 0; i < rozmiar_kontenera; i++ )
{
    std::copy( & tablica[ 0 ][ 0 ], & tablica[ 0 ][ 0 ] + rows * columns, & kontener[ i ].element[ 0 ][ 0 ] );
}

Przy czym oczywiście nazwy w powyższym kodzie są poglądowo wzięte z mojego programu, ale nie będę wrzucał oryginałów, ponieważ to jest dość skomplikowane :) w szczególności chodzi mi o wyrażenie dotyczące "końca tablicy" u mnie wykonane jako : &tablica[0][0] + rows * columns. Gdzieś znalazłem takie rozwiązanie jak powyżej, tylko , że u mnie nie działa, i nie wiem czy to wina kopiowania, czy może reszty programu.
Dziękuje za pomoc :)
P-133966
pekfos
» 2015-06-23 14:35:54
tylko , że u mnie nie działa
Tablica alokowana dynamicznie..?
P-133968
Anim
Temat założony przez niniejszego użytkownika
» 2015-06-23 14:50:25
A vector nie jest tablicą dynamiczną ?

Poza tym wybacz, ale nie widzę w równoważniku zdania "tablica alokowana dynamicznie" odpowiedzi na moje pytanie, czy dobrze korzystam z std::copy ? Jeśli nie, to jak to rozwizać? i czy w ogóle można używać std::copy do tablic dwuwymiarowych?
P-133970
pekfos
» 2015-06-23 14:53:18
czy dobrze korzystam z std::copy ?
Według strzępków informacji, które podałeś - nie.
P-133971
Anim
Temat założony przez niniejszego użytkownika
» 2015-06-23 15:00:20
Ech...wiesz, że nie ma obowiązku pomagania na forum ? Dzięki za Twoje informacje, ale nie są do niczego potrzebne, a mam wrażenie , ze niepotrzebnie zaśmiecają tę rozmowę. Jeśli uważasz, że powinienem podać więcej informacji, to wystarczy zapytać, bo naprawdę chcę rozwiązać ten problem. Jedyne, co wyniosłem z Twoich odpowiedzi to to , że coś robię źle (w sumie tyle to wiem), oraz, że istnieje możliwość kopiowania tablicy dwuwymiarowej (czego też się domyślam). Jednak raczej wolałbym pomoc w stylu "tutaj masz podpowiedź <link>" albo "powiedz dokładnie , a będe wiedział jak Ci pomóc", a nie "Tak, masz źle" .

Wybacz, ale to nie są żale, tylko uważam, że nie ma sensu odpowiadać na cudzą wiadomość, skoro w sumie to nie chce się pomóc ? Takie moje zdanie.
P-133972
pekfos
» 2015-06-23 15:15:50
Jakiej niby oczekujesz konkretnej odpowiedzi, skoro sam nie zadajesz konkretnego pytania? "Znalazłem takie rozwiązanie, ale u mnie nie działa". Jakbym nie chciał pomóc, napisałbym coś naprawdę adekwatnego do tak postawionego pytania, np "U mnie działa". Nie ma kodu, nie ma problemu. Widać nie dla każdego jest oczywiste, że aby zdiagnozować błąd w kodzie, trzeba go najpierw zobaczyć.. Jeśli jednak tak ci zależy na konkretnej odpowiedzi w każdych warunkach, proszę.
Czy poniższy zapis jest poprawny ?
Tak. Jeśli składnia się zgadza, to tak. Nic więcej nie da się powiedzieć, nie znając typów.
P-133973
Anim
Temat założony przez niniejszego użytkownika
» 2015-06-23 15:29:22
Wybacz, ale kod ma około 1000 linii, dodatkowo korzystam z kilku dodatkowych struktur rozrzuconych po plikach nagłówkowych. Napotkałem w pewnym momencie problem, gdzie muszę skorzystać z kopiowania tablicy dwuwymiarowej. Więc logicznym jest, że wstawiam fragment, który mnie interesuje. Miałem wrażenie, że dość jasno napisałem, że chodzi mi tylko o potwierdzenie czy w taki sposób jak wstawiłem, można to zrobić z wykorzystaniem funkcji copy, a jeśli nie , to jak inaczej mogę skopiować wartości zapisane w tablicy dwuwymiarowej do vectora? i tyle...może wytłumaczę jeszcze raz:

- mam tablicę tablica[l][k]
- mam vector std::vector<struktura> kontener;

pragnę przerzucić wartości z tablica[l][k] do std::vector<struktura> kontener. Próbuję to zrobić za pomocą funkcji copy. Wprawdzie kompilator mi nie wywala, ale coś nie działa, dlatego pytam, czy manewr z wykorzystaniem copy jest w ogóle dozwolony. I chyba tyle ... Mam nadzieję, że teraz jest jasne. I raz jeszcze dzięki za odpowiedzi.
P-133974
Monika90
» 2015-06-23 15:33:47
Teoretycznie nie można traktować tablicy T[n][m] jako tablicy T[n * m], ale działa to w typowych implementacjach (pod warunkiem że nie sprawdzają przekroczenia zakresu). Dokładniej to chodzi mi o to, że wskaźnika &a[0][0] gdzie a jest tablicą typu T[m][n] nie można traktować tak jak wskaźnika &b[0] gdzie b jest typu T[n * m].

Musisz zadbać o to by pod adresem &kontener[ i ].element[ 0 ][ 0 ], było dostatecznie dużo miejsca by skopiować tam twoją tablicę, to znaczy ten warunek musi zachodzić: kontener[ i ].element[ 0 ].size() >= n * m
P-133975
« 1 » 2
  Strona 1 z 2 Następna strona