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

Istnieje mozliwosc inkrementacji w strukturze?

Ostatnio zmodyfikowano 2011-04-25 21:00
Autor Wiadomość
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?
P-31955
dmx81
» 2011-04-25 18:42:23
chodzi ci o cos takiego,zeby dzialalo jak konstruktor?
C/C++
struct s
{
    int a, b;
    float c;
};

s ss = { 1, 2, 0.4 };
P-31962
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:

C/C++
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...
P-31963
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
P-31967
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)
C/C++
struct s
{
    int a;
    float b;
};

s ss = { 1, 0.2 };
void * tab[ 2 ];
tab[ 0 ] =& ss.a; //(void*)&ss.a ??
tab[ 1 ] =& ss.b; //(void*)&ss.b ??

int b = static_cast < int >( tab[ 0 ] ); //rzutowanie c++ //static_cast<int>(*tab[0]);
float c =( float ) tab[ 1 ]; //rzutowanie 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 :)
P-31970
malan
» 2011-04-25 19:55:37
Czy Tobie nie chodzi czasami o zwyczajną tablicę struktur?
C/C++
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?";
}
P-31971
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 ^^
P-31973
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).
P-31974
« 1 » 2
  Strona 1 z 2 Następna strona