c++STL中的find()函数 有两种使用方法
c++STL中的find()函數(shù) 有兩種使用方法
方法一:
開頭引頭文件:中的函數(shù)
其調(diào)用形式為
find(start,end,value)
start搜尋的起點(diǎn),end搜尋的終點(diǎn),要尋找的value值; 如果沒有找到,則返回end。函數(shù)的返回值為迭代器或指針,就是位置信息。
容器的表示方法
find(a.begin(),a.end(),value)
所有的返回,均是迭代器(容器)或指針(數(shù)組),而非是直觀感覺上的索引下標(biāo)。如果在查找范圍內(nèi)不存在,返回a.end(),這里需要注意的是,a.end()不在查找范圍內(nèi)。
STL的find函數(shù)的輸入查找范圍參數(shù)都是指針或是迭代器,返回的也是指針或是迭代器:
需要注意的是,find(start,end,xxx),end是不在查找范圍的,因此常常使用返回是否等于end來(lái)判斷是否查找成功
方法二:
各個(gè)容器自己實(shí)現(xiàn)的成員函數(shù)
vector沒有實(shí)現(xiàn)find函數(shù),除此之外,常見容器都實(shí)現(xiàn)了自己的find函數(shù)。
String是這一種順序存儲(chǔ)結(jié)構(gòu),其find函數(shù)返回的是下標(biāo)索引。set,map,multiset,multimap都不是順序索引的數(shù)據(jù)結(jié)構(gòu),所以返回的是迭代器。
1.數(shù)組的STL find查找:
int res[5] = { 0,1,2,3,4 };int *pos = find(res, res + 5, 5);//這里的查找范圍是指針//res+5不在查找范圍內(nèi)if (pos == (res + 5))cout << "Couldn't find it";elsecout << "Find it!";2.字符串string STL find查找:
string str = "abcd";if (find(str.begin(), str.end(), 'a') != str.end())//使用迭代器cout << "Find it!";elsecout << "Couldn't find it!";3.字符串string自帶方法find查找:
string str = "abcd";cout << str.find('a');//返回的是下標(biāo)的值而不是上面的指針或是迭代器要是沒有找到,返回的是str::npos
注意,只有string的find方法是返回的下標(biāo),因?yàn)閟tring是順序索引,set,map,multiset,multimap都不是順序索引的數(shù)據(jù)結(jié)構(gòu),所以返回的是迭代器。
總結(jié)
以上是生活随笔為你收集整理的c++STL中的find()函数 有两种使用方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机上如何下载LINE App并注册使用
- 下一篇: leetcode-349-两个数组的交集