//employee is class with public members salary and nname
int main()
{
map<int,employee> employees;
employee e1;
strcpy(e1.nname,"aaa");
e1.salary=25000;
employee e2;
strcpy(e2.nname,"ccc");
e2.salary=26000;
employees[1]=e1;
employees[2]=e2;
employee e3;
strcpy(e3.nname,"bbb");
e3.salary=26000;
employees[5]=e3;
employee ee;
cout<<employees.size()<<endl;
for(int i=0;i<employees.size();i++)
{
ee=employees[i];
cout<<ee.nname<<endl;
}
o/p: 3 - //so i=3 displays employees[0],1,2,3
aaa - //i=
ccc -
- //2 blank lines
- // <---why blank line cming ,ok cause no data but why it
bbb - //executed 4th and 5th time and we got
// employees[5] ----- bbb?????
//when i printed value of"i" i got from 0 to 5!!!
--------------
can any1 explain thanx in advance
回答
您顯示employees[i]
,其中i= 0,1,2,3,4,5
。
爲什麼在進入for-loop之前顯示6條目如果employees.size() == 3
?
答案是,當i==0
,你要在地圖上添加一個條目employees[0]
。 (這是因爲map::operator[]
返回一個引用,如果該條目不存在,則創建一個)。
所以,現在,employees.size()
等於4 調用employees[1],[2]
不改變地圖,但由於大小爲4,您也訪問employees[3]
,這反過來又增加了地圖(等了employees[4]
)的條目。
當您到達employees[5]
時停止,因爲它存在於地圖中並且地圖不再增長。
如果要遍歷映射條目,請使用迭代器。
map<int, employee>::iterator it;
for (it = employees.begin(); it != employees.end(); ++it)
{
ee = it->second;
cout<< ee.nname << endl;
}
PS-請讓你的代碼可讀。
問題thanx alot.new用戶,並做到了這一點,將盡量使代碼更格式化 – lokesh
好,讓我們試試這個具有更加可控例如:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
map<int,string> db;
db[1] = string("index = 1");
db[2] = string("index = 2");
db[5] = string("index = 5");
for (size_t i = 0; i < db.size(); i++)
{
cout << i << " : " << db[i] << endl;
cout << "size is : " << db.size() << endl;
}
return 0;
}
現在,這裏的問題是,當你訪問db[0]
,db[3]
和db[4]
,你實際上是添加元素到地圖中。
0 :
size is : 4
1 : index = 1
size is : 4
2 : index = 2
size is : 4
3 :
size is : 5
4 :
size is : 6
5 : index = 5
size is : 6
您可能還有其他問題。你的班級員工可能有一個破壞的默認構造函數,它不會正確初始化字符串屬性。
Thanx ....嘿,你可以告訴什麼是破碎的構造....你的意思是我還沒有定義構造函數,所以它會給垃圾值???請解釋.....我剛開始C++:D – lokesh
- 1. 使用mod的循環隊列大小
- 2. 在循環中使用字體大小
- 3. 地圖和For循環
- 4. java上的循環使用循環的小鬍子實現的地圖
- 5. 如何使用循環來增加滾動視圖大小(swift3)
- 6. 即使放大和縮小Google地圖
- 7. 地圖,減少,過濾適用於循環和while循環
- 8. 使用循環查找python中的最大值和最小值
- 9. OpenCL限制循環大小?
- 10. 循環隊列大小
- 11. 爲什麼一個小循環中的大循環比大循環中的小循環更快?
- 12. 循環.CSV和繪圖地圖標記
- 13. 使用地圖功能循環樣式
- 14. 地圖使用ggmap循環mfrow
- 15. 使用for循環,而不是地圖
- 16. jQuery圖像加載循環 - 包裝HTML和檢查大小?
- 17. 縮小「if-else」循環的大小
- 18. 使用Scala和StringTemplate,我如何通過地圖循環
- 19. 尋找do-while循環中的最大值和小寫/大寫
- 20. 如何使用地圖的指針獲取地圖的大小?
- 21. 地圖循環陣列
- 22. Python:For循環Vs.地圖
- 23. 循環在地圖在Haskell
- 24. 循環到地圖前面
- 25. 調整大小SVG圖像和地區
- 26. 調整大小滑塊圖像的屏幕大小[jQuery的循環插件]
- 27. 如何在Clojure的循環中正確地綁定更大和更小的值?
- 28. 大量使用一個沒有for循環的小向量?
- 29. 如何使用循環讀取未知文件大小?
- 30. 在循環中使用filesize()PHP函數 - 返回相同大小
嗯。有沒有搞錯? –
@lokesh:請提出問題。 –
問題是在代碼註釋中,它不是很好的格式,但它是一個正確的問題。 –