webForumDet fria alternativet

Hjälp hur använda std::vector

C/C++

4 svar · 419 visningar · startad av Dinodipp

Medlem sedan sep. 200128 inlägg
Frågan#1

Kan någon förbarma sig över mig och
förklara hur jag använder std::vector för att lägga in objekt och ev ta ut dom?

tack på förhand

Medlem sedan apr. 20003 971 inlägg
#2

Något sånt här, kanske?

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">std::vector<int> a;

a.push_back(10);
a.push_back(15);
a.push_back(20);

for(int i = 0; i < a.size(); a++)
{
cout << a << endl;
}

------------------
- Swey
A hacker from the south

Medlem sedan aug. 2001458 inlägg
#3

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"> typedef vector<int> IntVector;

IntVector integers;

integers.push_back(1);
integers.push_back(2);
integers.push_back(3);

for (IntVector::const_iterator i = integers.begin(); i != integers.end(); ++i)
{
	std::cout \<\< "tal: " \<\< \*i \<\< endl;
}
Medlem sedan apr. 20003 971 inlägg
#4

Det funkar också, men är det bättre på något sätt?

------------------
- Swey
A hacker from the south

Medlem sedan aug. 2001458 inlägg
#5

I det här fallet är det svårt säga att det är bättre. Det är inte så att koden blir snabbare, mindre eller något sådant. Kanske till och med tvärtom - det blir en viss (marginell) overhead att skapa iteratorn.

Att använda en const_iterator gör att du inte råker ändra data av misstag (kompileringsfel).

Beroende på vad du har för datastruktur kan man göra en smartare iterator, som kanske cachar data smart och gör att det går snabbare att loopa igenom (vid större datamängder). Då kan du transparent jobba med iteratorn.

Det är mer i komplexa exempel du har nytta av iteratorer. Men även om du vill använda predikat-funktioner för att sedan låta STL gå igenom en godtycklig container åt dig och plocka ut alla element som uppfyller vissa villkor.

Det kanske är lite inlärningströskel, men man har mycket gratis med iteratorer. Det finns några bra exempel på http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang98/HTML/sample.asp

251 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)