Jak stworzyć vector tablic
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Jak stworzyć vector tablic

AutorWiadomość
Temat założony przez niniejszego użytkownika
Jak stworzyć vector tablic
» 2018-10-22 21:17:20
Chciałbym stworzyć vector tablic ale nie wiem jak to zrobić :

C/C++
vector < int[ 5 ] > liczby;
liczby.pushback( { 2, 3, 4, 5, 6 } ); //mogę tak dodać liczby?
for( int i = 0; i < 5; i++ )
{
    cout << liczby[ 0 ][ i ] ??<< endl;
}
 
ewentualnie chciałbym stworzyć vector ze strukturą, w której znajduje się tablica

C/C++
struct cykl
{
    liczby[ 5 ];
}

vector < cykl > partia;
for( int i = 0; i < 5; i++ )
{
    partia.liczby[ i ].pushback( i )
}
P-172645
» 2018-10-22 21:21:56
Użyj std::array<> w roli tablicy.
P-172646
Temat założony przez niniejszego użytkownika
» 2018-10-22 21:56:09
Chciałbym mieć bardzo dużo partii powiedzmy milion i kolejno wyrzucać złe partie(wyniki paru pomiarów), aby zostały tylko te po mojej selekcji. Array ma stałą wielkość, czy nadal powinienem się jej trzymać? Nie rozumiem też(albo nie potrafię) jak mógłbym użyć array jako mojej "tablicy" dwuwymiarowej,

C/C++
std::array < int, 3 > pomiar = { 1, 2, 4, };
Mógłbym również stworzyć tablice dwuwymiarową, ale wtedy niewygodnie byłoby pracować na moich partiach. Jak mogę zaalokować tak duża pamięć przy array? 
P-172649
» 2018-10-22 22:11:52
W roli tablicy, którą chciałeś mieć jako element wektora.
P-172650
Temat założony przez niniejszego użytkownika
» 2018-10-25 11:31:46
C/C++
int a = 0;
int b = 2;
int c = 5;

std::array < int, 3 > temp = { a, b, c };
vector < array < int, 3 >> proba;
proba.push_back( temp );
temp = { 1, 2, 3 );
    proba.push_back( temp );
    for( int i = 0; i < proba.size(); i++ )
    {
        printf( "%d, ", proba[ i ] ); //jak wyswietlić dany element z danego vecotra?
    }

Poradziłem sobie wkładając do vectora temp, ale czy jest możliwość przypisania bez tego temp?

Wyświetla mi się jedynie pierwsza liczba próby, jak moge wyświetlić wszystkie liczby kontynera? Jak mogę porównać liczby między vectorami?
P-172675
» 2018-10-25 15:02:00
C/C++
std::vector < std::array < int, 3 >> v;
v.push_back( { 1, 2, 3 } );
Wymagane C++11.

C/C++
printf( "%d, ", proba[ i ] ); //jak wyswietlić dany element z danego vecotra?
Wypisuj proba[i][j]. To co ty napisałeś ma niezdefiniowane zachowanie.
P-172676
Temat założony przez niniejszego użytkownika
» 2018-10-25 23:34:46
Dzięki, pomogło :)

Jednak przy tej złożoności, niestety mam kolejne pytanie. Powinienem się odwoływać przez referencje w funkcji?

C/C++
std::array < int, 3 > temp = { a, b, c };
vector < array < int, 3 >> proba;
proba.push_back( temp );

wyswietl( proba );



wyswietl( array < int, 3 >& proba )
{
    for( int i = 0; i < proba.size(); i++ )
    {
        for( int j = 0; j < 3; j++ )
        {
            printf( "%d, ", proba[ i ][ j ] );
        }
    }
}

[ cpp / ]
P-172678
» 2018-10-25 23:43:08
Jak najbardziej referencję, żeby niepotrzebnie nie kopiować całych kolekcji.
Jeszcze jakiś
const
 gdy funkcja nie będzie modyfikować kolekcji.


To jest błędnie napisana funkcja.
C/C++
wyswietl( array < int, 3 >& proba )
{
    for( int i = 0; i < proba.size(); i++ )
    {
        for( int j = 0; j < 3; j++ )
        {
            printf( "%d, ", proba[ i ][ j ] );
        }
    }
}
Tak nie wyświetla się danych z jednowymiarowej tablicy.
C/C++
printf( "%d, ", proba[ i ][ j ] );
P-172679
« 1 » 2
 Strona 1 z 2Następna strona