c++中的find(slist.begin(),slist.end(),searthValue)函数
c++primer第九章的删除容器内的元素stringsearthValue("Quasimodo");list<string>::iteratoriter=find(s...
c++ primer第九章的删除容器内的元素
string searthValue("Quasimodo");
list<string>::iterator iter=find(slist.begin(),slist.end(),searthValue);
if(iter!=slist.end())
slist.erase(iter);
不太理解这段代码的意思,主要是其中的find算法是什么意思??? 展开
string searthValue("Quasimodo");
list<string>::iterator iter=find(slist.begin(),slist.end(),searthValue);
if(iter!=slist.end())
slist.erase(iter);
不太理解这段代码的意思,主要是其中的find算法是什么意思??? 展开
1个回答
展开全部
find顾名思义,就是查找。 如果查找呢? 在一个范围里面,查找某个值。 在上面的例子里, 这个范围就是从string list这个容器即list<string>的头(slist.begin())到尾(slist.end()),而某个值就是searthValue这个string所包含的值,即字符串Quasimodo。 注意: 这里的头、尾这样的位置是由iterator类型,即迭代器来表述的。你可以把迭代器“理解”为指针。 find一旦查找到了这个值,立刻返回该值在容器(list<string>)中所在的位置(iter所指的位置)。如果找不到,那么iter指向容器最尾部(slist.end()),注意:最尾部一般是最后有效数据位置+1. 用数组说明,比如a[5], a[0]~a[4], 最尾部则是a[5], 这是a有效内存地址的最后一位+1, 所以slist.end()就不包含任何有效的数据, 只是一个标志。
所以上面的代码有不能理解了。
在slist中全程查找字符串Quasimodo,如果找到了, 就删除它(从string list中删除这个list元素)。
所以上面的代码有不能理解了。
在slist中全程查找字符串Quasimodo,如果找到了, 就删除它(从string list中删除这个list元素)。
追问
我的string为hello,运行的时候报错了,是什么原因呢
追答
你的list是如何构建的? 帖你的详细代码。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询