c++错误之map的find()返回值类型
生活随笔
收集整理的這篇文章主要介紹了
c++错误之map的find()返回值类型
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
QueryResult TextQuery::query(const string &s)const
{
//不能用下標(biāo)操作查詢單詞s是否存在,因?yàn)橄聵?biāo)操作在單詞不存在的
//情況下會(huì)往map中添加單詞,正確的做法用find
auto ret = wm.find(s); //find返回的是迭代器
if(ret == wm.end()){//這里必須新建一個(gè)set<line_no>對(duì)象,內(nèi)容為空,不然//對(duì)此時(shí)返回的QueryResult對(duì)象中的有關(guān)wm對(duì)象的一切操作均會(huì)報(bào)錯(cuò),因?yàn)闆](méi)有分配內(nèi)存,是不能使用的。//智能指針使用前必須要里面有內(nèi)容,也就是分配了內(nèi)存auto nodata = make_shared<set<line_no>>();return QueryResult(file,nodata,s);}//注意迭代器其實(shí)就是一個(gè)指針,用->訪問(wèn)迭代器所指的pairreturn QueryResult(file,ret->second,s);
}
map的find(s)成員,目的是在map中查找關(guān)鍵字s的pair,找到后返回指向關(guān)鍵字為s的pair的迭代器,找不到那么就會(huì)返回尾后迭代器,切記迭代器其實(shí)就是一個(gè)指針,用迭代器訪問(wèn)pair的first或者second成員方法是:iter->first 或 iter -> second
不能用.號(hào)。
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的c++错误之map的find()返回值类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python的16.1节课后练习16-2
- 下一篇: c语言现代方法16章 基础、课后习题、基