C 的迭代器的end 為什麼指向最後元素的下乙個位置

時間 2021-06-01 03:40:15

1樓:年輪

map wordCount;

wordCount.insert(make_pair("chinese",200));

wordCount.insert(make_pair("english", 9));

wordCount.insert(make_pair("frence",100));

wordCount["germany"] = 80;

wordCount["spanish"] = 19map::iterator it = wordCount.begin();

int count = wordCount.count("spanish");

cout << count << endl;

it = wordCount.find("spanish");

if (it != wordCount.end()) //只能這麼判斷,無法用it!= NULL

{ cout << it->second << endl;

cout << wordCount.end()->first.c_str()<

2樓:飄逸的h

因為實際應用的時候確實需要這個只想最後元素下乙個的end()。比如find的時候,找到了給你返回pair(裡面是key和值),找不到的時候給你返回什麼呢?比如乙個只有乙個元素的容器,那begin()和end()不是指向相同了,這樣無法寫出for迴圈了吧?

雖然這些問題可以用一些手段解決,但是不通用不簡潔,所以end()指向結尾後乙個是很合理的

python的迭代器為什麼一定要實現 iter 方法?

劉昕宸 劉昕宸 徹底搞懂Python的 iter 和 next Iterable和Iteration iter 與 next iter 返回乙個迭代器物件,該物件是乙個實現了 next 的物件。該方法為容器類所擁有,類似於迭代器模式中Aggregate類的createIterator方法。next ...

迭代器尾後元素的設計是出於什麼意圖?

左閉右開區間是個好東西,結尾的元素或迭代器直接當成哨兵。表示遍歷結束。區間描述的自然,用迭代器遍歷區間演算法也能寫的簡練。另外考慮一下相鄰區間的連線 1,2 2,4 1,4 很自然 1,2 2,4 啥?1,2 3 4 啥?參考 程式設計原本 豆瓣 天象 當然得有尾後元素,因為乙個大小為n的容器,尾元...

為什麼科學和宗教都指向末日的到來?

Spike Spiegel 個人認為宗教和科學有本質的區別,科學和宗教都是人類認識世界,改變世界的手段,在解釋一些事情的時候會出現有部分相似的解釋,但在解釋的手段和方向上並不相同。人類科技的發展帶來更多的可能性,更有可能毀滅也更有可能突變進而發展出更高一階層的文明層次。末日必然出現,所以也談不上科學...