python list取值的几种方法,python 列表find函数
我们在C中使用的find函数一般在算法库中提供或者
是STL容器中的查找函数。今天就来总结一下它们的用途和区别。
1. 容器里面的find函数
除了vector,STL中其他常见的容器都有自己的成员函数find,比如string中的find函数,string的find()函数用来找出字母在字符串中的位置。
功能原型如下:
//(1)size _ type find(const basic _ string str,size _ type pos=0)const no except;//(2)size_type查找(const charT* s,size _ type pos=0)const;//(3)size_type查找(const charT* s,size_type pos,size _ type n)const;//(4)size_type find(图表c,size _ type pos=0)const no except;(1)两个参数(2)和(4):
第一个参数是要查找的元素,第二个参数是字符串中的一个位置,这意味着从这个位置开始从字符串中查找指定的元素。(如果不填这个参数,也是可以的。默认情况下,从字符串的第一个位置开始。)
对于(3)的三个参数:取第一个参数的前N个(第三个参数)字符(相当于截取S的前N个字符),第二个参数表示从哪里开始查找。
返回值:如果搜索成功,返回根据搜索规则找到的第一个字符或子串的位置;如果搜索失败,则返回npos,即-1(打印为4294967295)。
2. 算法里面的find函数
算法库中搜索功能的相关功能
它在范围内寻找元素,并返回一个迭代器,迭代器[first,last]比较范围内的第一个元素是否等于val。找到了这个元素的迭代器。如果没有找到这样的元素,函数返回last(即迭代器)。这个函数的实现原理是用operator==比较每个元素与val。具体实现如下:
templateclass InputIterator,class TInputIterator find(input iterator first,InputIterator last,const T val){ while (first!=last) { if (*first==val)先返回;第一;}最后返回;}为什么库中不返回索引下标?这是因为索引下标在数组中很常见,数组是一种顺序索引。但是很多数据结构的存储并不是连续的,所以无法实现顺序索引。因为它是一个库函数,所以为了考虑所有的数据结构,它只返回指针或迭代器。所以顺序存储结构中的find函数返回下标索引。因为存储在连续的空间中,所以返回下标没有问题,而set、map、multiset、multimap等数据结构都不是顺序索引的数据结构,所以返回的是迭代器。)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。