Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

21

27.12.2006, 17:28

Zitat von »"David_pb"«


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
typedef std::vector< std::wstring > StringList;
typedef StringList::iterator StringListIt;

StringList filenames;

filenames.push_back( L"bmp_top.bmp" );
filenames.push_back( L"foobar.bmp" );

for ( StringListIt it = filenames.begin(); it != filenames.end(); ++it )
{
    std::wcout << *it << std::endl;
}



das lauft durch den ganzen vector und *it ist im prinzip vector...

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

22

27.12.2006, 17:31

Ja, ich habe das schon gesehen, aber ich muss ja irgendwie die beiden for-Schleifen verwurschteln, nämlich die des Iterators und die, des hBitmap !! Und dazu fehlt mir der Ansatz, wie ich des logisch (und elegant) aufbaun soll.

Ich hatte mir erst das hier überlegt, aber des geht net :( .

C-/C++-Quelltext

1
2
3
4
5
6
StringListIt it = filenames.begin();

            for(int i=0; i<PAIR_COUNT; i++)
            {
                hBitmap[i] = (HBITMAP)LoadImageW(NULL,*it++,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
            }

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

23

27.12.2006, 17:40

C-/C++-Quelltext

1
2
3
4
5
int i = 0;
for ( StringListIt it = filenames.begin(); it != filenames.end(); ++it, ++i )
{
    hBitmap[i] = (HBITMAP)LoadImageW(NULL,*it,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 
}

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

24

27.12.2006, 17:45

Geht leider nicht, da er den 2. Parameter nicht konvertieren kann :( , aber der Ansatz ist echt genial (wenn auch trivial, aber ich wäre nie drauf gekommen).

Und noch was: Was spräche denn gegen Verkette Listen?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

25

27.12.2006, 17:57

oh, sry hab nicht mitgedacht^^

C-/C++-Quelltext

1
2
3
4
5
int i = 0;
for ( StringListIt it = filenames.begin(); it != filenames.end(); ++it, ++i )
{
    hBitmap[i] = (HBITMAP)LoadImageW(NULL,*it.c_str(),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
}


meinst du die liste anstatt des vectors?

ich würde sagen das hängt von der anwendung ab. hier wird eine liste nicht wirklich was bringen...

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

26

27.12.2006, 18:06

Das geht leider auch nicht, da c_str() kein Element von std::vector ist :( .

Bei dem Vektor ist es doch so, wenn man ein element löscht, rutschen die anderen ja nicht nach -> Speicherverschwendung, oder?

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

27

27.12.2006, 18:17

entweder (*it).c_str() oder it->c_str();
du kannst auch filenames.c_str() nehmen - das ist einer der Unterschiede von Vector und Liste

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

28

27.12.2006, 19:06

lol, sry ich glaub ich hab heute meinen kopf im standby...

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

29

27.12.2006, 21:47

D.h. diese Variante müsste doch eigentlich gehen oder?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
StringList filenames; 

            filenames.push_back( L"bmp_top.bmp" ); 
            filenames.push_back( L"bmp_2.bmp" ); 
            filenames.push_back( L"bmp_3.bmp" ); 
            filenames.push_back( L"bmp_4.bmp" ); 
            filenames.push_back( L"bmp_5.bmp" ); 
            filenames.push_back( L"bmp_6.bmp" ); 
            filenames.push_back( L"bmp_7.bmp" ); 
    
            for(int i=0; i<PAIR_COUNT; i++) 
            { 
                hBitmap[i] = (HBITMAP)LoadImageW(NULL,filenames[i].c_str(),IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 
            }

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

30

28.12.2006, 00:22

ja, ich glaub die müsste gehen - geht sie?

Werbeanzeige