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

[C++] Invalid array assignment

Ostatnio zmodyfikowano 2015-11-01 20:51
Autor Wiadomość
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:
C/C++
int wzor[ rozmiar ];
int tablica[ rozmiar ];
for( int x = 0; x < rozmiar; x++ )
{
    wzor[ x ] = 0;
}

//Jakis kod

for( int x = 0; /*Jakis warunek*/; x++ )
{
    tablica = wzor;
    //Jakis kod
}
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?
P-139422
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) )
P-139424
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;
?
P-139427
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;
P-139428
carlosmay
» 2015-10-31 14:35:48
Musisz przypisać element po elemencie.
C/C++
for( int i = 0; i < rozmiar; i++ )
     tablica[ i ] = wzor[ i ];

 
P-139429
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.
P-139430
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ą?
P-139444
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 );
P-139448
« 1 » 2
  Strona 1 z 2 Następna strona