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

Jak stworzyć vector tablic

Ostatnio zmodyfikowano 2018-11-15 18:39
Autor Wiadomość
Hosehose
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
pekfos
» 2018-10-22 21:21:56
Użyj std::array<> w roli tablicy.
P-172646
Hosehose
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
pekfos
» 2018-10-22 22:11:52
W roli tablicy, którą chciałeś mieć jako element wektora.
P-172650
Hosehose
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
pekfos
» 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
Hosehose
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
YooSy
» 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 2 Następna strona