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ć : vector < int[ 5 ] > liczby; liczby.pushback( { 2, 3, 4, 5, 6 } ); 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 struct cykl { liczby[ 5 ]; }
vector < cykl > partia; for( int i = 0; i < 5; i++ ) { partia.liczby[ i ].pushback( i ) }
|
|
pekfos |
» 2018-10-22 21:21:56 Użyj std::array<> w roli tablicy. |
|
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, 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? |
|
pekfos |
» 2018-10-22 22:11:52 W roli tablicy, którą chciałeś mieć jako element wektora. |
|
Hosehose Temat założony przez niniejszego użytkownika |
» 2018-10-25 11:31:46 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 ] ); }
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? |
|
pekfos |
» 2018-10-25 15:02:00 std::vector < std::array < int, 3 >> v; v.push_back( { 1, 2, 3 } ); Wymagane C++11. printf( "%d, ", proba[ i ] );
|
Wypisuj proba[i][j]. To co ty napisałeś ma niezdefiniowane zachowanie. |
|
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? 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 / ]
|
|
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. 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. printf( "%d, ", proba[ i ][ j ] );
|
|
|
« 1 » 2 |