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

Szybkie zerowanie tablicy, bez użycia pętli

Ostatnio zmodyfikowano 2017-08-21 21:29
Autor Wiadomość
Trytrihjyuki
Temat założony przez niniejszego użytkownika
Szybkie zerowanie tablicy, bez użycia pętli
» 2017-08-21 20:52:53
Czy jest jakiś sposób na szybkie zerowanie (lub zapełnianie każdej komórki określoną wartością to by było lepsze ale zerowanie też mnie zadowoli) tablicy jednowymiarowej bez użycia pętli? Jakaś funkcja? Potrzebuję tego do zadania na OI, rozwiązanie z zerowaniem w pętli mocno mi niszczy czasy.
P-164181
DejaVu
» 2017-08-21 20:56:06
Sprawdź to:
C/C++
int tab[ 999 ] = { 0 };
P-164182
karambaHZP
» 2017-08-21 20:56:14
C/C++
#include <iostream>

int main()
{
    constexpr std::size_t size { 10u };
    int arr[ size ] { };
    for( std::size_t i { }; i < size; ++i )
    {
        std::cout << arr[ i ] << ' ';
    }
    std::cout << std::endl;
}

i jeszcze tak może:
C/C++
#include <iostream>
#include <algorithm>
#include <array>

int main()
{
    constexpr std::size_t size { 10u };
    std::array < int, size > arr { };
    std::fill( arr.begin(), arr.end(), 5 );
    for( auto const & el: arr )
    {
        std::cout << el << ' ';
    }
    std::cout << std::endl;
}

Zapomniałem, że std::array<> ma metodę, która wypełnia pola podaną wartością:
C/C++
constexpr std::size_t size { 10u };
std::array < int, size > arr { };
arr.fill( 5 );
P-164183
Trytrihjyuki
Temat założony przez niniejszego użytkownika
» 2017-08-21 21:19:54
Pierwszy sposób niestety nie działa.
Co do drugiego, nigdy się nie bawiłem z biblioteką <array> a kod po wklejeniu się nie chce skompilować, mógłbyś to sprawdzić proszę?
P-164184
mateczek
» 2017-08-21 21:20:16
wątpię aby zerowanie tablicy było problemem nie pozwalającym zmieścić się w limitach !!! każde z rozwiązań jakąś pętlą przejechać tablice musi !!!
a pierwszy sposób działa wyśmienicie
C/C++
#include <iostream>

int main() {
    int tab1[ 10 ] { 0 }; // wyzerowana
    int tab2[ 10 ];
    for( int i = 0; i < 10; i++ ) {
        std::cout << tab1[ i ] << " " << tab2[ i ] << std::endl;
    }
}

P-164185
Trytrihjyuki
Temat założony przez niniejszego użytkownika
» 2017-08-21 21:26:32
Wiem, gdyby było to jednorazowe przejście nie martwiłbym się o czas ,ale w pesymistycznym przypadku będzie 1e4 zerowań tablicy o wymiarach 1e4.
P-164186
mateczek
» 2017-08-21 21:29:40
no to musisz poszukać innego algorytmu. Zerowania tablicy raczej nie przyspieszysz.
P-164187
« 1 »
  Strona 1 z 1