Savail Temat założony przez niniejszego użytkownika |
Istnieje mozliwosc inkrementacji w strukturze? » 2011-04-25 17:58:34 Hej Chodzi mi o to czy mozna jakos przypisac dane do kolejnych elementow struktury za pomoca petli bez uzywania konkretnych nazw elementów danej struktury? |
|
dmx81 |
» 2011-04-25 18:42:23 chodzi ci o cos takiego,zeby dzialalo jak konstruktor? struct s { int a, b; float c; };
s ss = { 1, 2, 0.4 };
|
|
kamillo121 |
» 2011-04-25 18:46:45 Jeżeli chodzi ci o np tak jak jest w php foreach możesz jechać po kolejnych elementach struktury to w c++ czegoś takiego jeszcze nie znalazłem ale zawsze możesz pokombinować ze wskaźnikiem na dane pole i potem tylko ink: struct foo { int a; int b; };
foo * ab = new foo;
ab->a = 123; ab->b = 23; int * ac =& ab->a;
std::cout <<* ac; ac++; std::cout << "\n" <<* ac;
Tylko akurat tutaj zakładam, że mam tylko pola typu int... |
|
Savail Temat założony przez niniejszego użytkownika |
» 2011-04-25 18:57:38 dmx: Chodzilo o to abym mogl sobie jezdzic po elementach struktury jak po tablicy (tak jakby) czyli np tab[0] = struktura.element1, tab[1] = struktura.element2 itd... Kamillo: no mialem nadzieje ze jest prostsza metoda, ale widocznie jedynym sposobem na cos takiego jest utworzenie listy ileśkierunkowej (juz nie pamietam ;p). Ale nie bede jej tworzyc bo zdaje mi sie ze nie oplaca sie dla 14 elementow... Dzieki wam za odpowiedz btw |
|
dmx81 |
» 2011-04-25 19:36:55 w sumie tez mi nie przychodzi nic innego do glowy, jak tablica wskaznikow na adresy elementow (czyli dodatkowa robota z przypisaniem adresu kazdego elementu struktury do tablicy na te adresy + pozniejsze rzutowanie) struct s { int a; float b; };
s ss = { 1, 0.2 }; void * tab[ 2 ]; tab[ 0 ] =& ss.a; tab[ 1 ] =& ss.b;
int b = static_cast < int >( tab[ 0 ] ); float c =( float ) tab[ 1 ];
nie wiem, czy takie cos by zadzialalo, nie probowalem jeszcze tak no i kod tez wymyslilem na poczekaniu, ale byc moze cos w tym jest (z tym, ze jak widac, troche dodatkowego pisania, wiec moze mijac sie z celem). Byc moze moznaby tez przeciazyc operator[], aby zwracal poczatek struktury+przesuniecie w bitach (ale gdzies trzeba by miec tablice, aby pamietal, o ile przesuwac bitow - np po drodze beda int'y, char'y - trzeba by zsumowac ich rozmiar i uwzglednic przy przesunieciu) - pewnie to wszytsko jest wykonalne, ale to pewnie dla bardziej zaawansowanych, ja tu tylko sobie teoretycznie rozmyslam :) |
|
malan |
» 2011-04-25 19:55:37 Czy Tobie nie chodzi czasami o zwyczajną tablicę struktur? struct Topic { int answersCount; int id; int postsCount; std::string title; };
int main() { Topic topics[ 5 ]; for( int i = 0; i < 5; ++i ) { topics[ i ].answersCount = 0; topics[ i ].id = 0; topics[ i ].postsCount = 0; } topics[ 0 ].answersCount = 4; topics[ 0 ].id = 4174; topics[ 0 ].postsCount = 5; topics[ 0 ].title = "Istnieje mozliwosc inkrementacji w strukturze?"; } |
|
Savail Temat założony przez niniejszego użytkownika |
» 2011-04-25 20:06:40 dmx: nawet nie wiedzialem ze rzutowanie bedzie potrzebne ;p, nawet nie wiem co to dokladnie jest ale dzieki za kodzik ^^ Malan: Chodzi o elementy jednej struktury a nie tablice struktur ^^ |
|
malan |
» 2011-04-25 20:19:35 Aaaha, heh. W takim razie sposób dmx81 lub zamiast tworzyć w strukturze 5 pól/zmiennych to zrób z nich tablicę (jeżeli mają (te pola/zmienne) ze sobą coś wspólnego). |
|
« 1 » 2 |