[C++] Invalid array assignment
Ostatnio zmodyfikowano 2015-11-01 20:51
TheReclif Temat założony przez niniejszego użytkownika |
[C++] Invalid array assignment » 2015-10-31 13:35:55 Witam! Mam mały problem, a mianowicie muszę w swoim kodzie zerować wszystkie wartości w tablicy i nie chcę robić tego pętlą, więc stworzyłem tablice o tym samym rozmiarze i jeden raz ją wyzerowałem pętlą. Mając dwie takie same tablice(jedna była wyzerowana) myślałem, że wyzerowanie będzie proste: int wzor[ rozmiar ]; int tablica[ rozmiar ]; for( int x = 0; x < rozmiar; x++ ) { wzor[ x ] = 0; }
for( int x = 0; ; x++ ) { tablica = wzor; }
Kompilator wywala błąd w linijce tablica = wzor; o treści takiej, jak w temacie. Jak można zrobić takie zerowanie tablicy? Czy w ogóle jest ono możliwe? |
|
carlosmay |
» 2015-10-31 14:19:20 Nie można tak przypisać tablicy do tablicy. W ten sposób byłoby możliwe przypisanie adresu pierwszej tablicy do drugiej (oba wskazywałyby na jeden adres pierwszego elementu, więc kompilator na to nie pozwoli). Tablica operuje na adresach (wyłuskanie wartości można realizować operatorem [] np. wzor[1] lub *(wzor + 1) ) |
|
TheReclif Temat założony przez niniejszego użytkownika |
» 2015-10-31 14:31:23 Co zrobić, żeby uzyskać zamierzony efekt? Czy zadziała * tablica = * wzor; ? |
|
wojownik266 |
» 2015-10-31 14:34:23 O ile znam się na programowaniu to aby przypisać wartość jednej tablicy do drugiej bezwarunkowo musisz użyć pętli. Innej rady nie ma. Chyba żeby jeszcze spróbować z kontenerem array < int, 10 > tab; |
|
carlosmay |
» 2015-10-31 14:35:48 Musisz przypisać element po elemencie. for( int i = 0; i < rozmiar; i++ ) tablica[ i ] = wzor[ i ];
|
|
carlosmay |
» 2015-10-31 14:39:45 Jeśli zależy ci na przypisaniu użyj kontenera std::vector , ma on przeciążony operator= więc takie bezpośrednie przypisanie jest dozwolwne. |
|
pekfos |
» 2015-10-31 16:05:48 muszę w swoim kodzie zerować wszystkie wartości w tablicy i nie chcę robić tego pętlą, więc stworzyłem tablice o tym samym rozmiarze i jeden raz ją wyzerowałem pętlą. |
Dlaczego nie pętlą? |
|
j23 |
» 2015-10-31 17:02:38 (...) i nie chcę robić tego pętlą |
Bez pętli to tak: std::fill( tablica, tablica + rozmiar, 0 ); |
|
« 1 » 2 |