注册 登录
编程论坛 C++教室

高手帮忙看一下,不懂什么意思?

棉雨 发布于 2011-10-05 16:35, 849 次点击
在看元素删除的时候,看到这么一段:
list<string>::iterator eleml,elem2;
//elem1 refers to vall
elem1 = find(slist.begin(),slist.end(),val1);
//elem2 refers to the first occurrence of val2 after val1
elem2 = find(elem1,slist.end(),val2);
//erase range from val1 up to but not including val2
slist.erase(elem1,elem2);
我想问一下,val1,val2是什么值?是字符串还是……?
4 回复
#2
rjsp2011-10-06 00:45
很显然,是string

不喜欢
list<string>::iterator eleml,elem2;
elem1 = find(slist.begin(),slist.end(),val1);
elem2 = find(elem1,slist.end(),val2);
这种恶心写法,即便是纯正的C语言,也提倡不再使用这种写法

list<string>::iterator eleml = find(slist.begin(),slist.end(),val1);
list<string>::iterator elem2 = find(elem1,slist.end(),val2);
多么清晰明了
#3
棉雨2011-10-06 09:01
回复 2楼 rjsp
呵呵,我是从C++Primer中文版(第4版).pdf里边搬过来的,你说的那种写法看上去确实很清晰,以后我多注意改改就是。
#4
lqsh2011-10-06 09:16
list双向链式表容器
STL中list容器实现了双向的链式数据结构,数据元素通过指针串联成逻辑上相邻的线性表。
fine()查找算法可以找到链表中你需要的数据元素,如果找到该数据元素则返回迭代器的位置,否责返回end()迭代器的位置。
你要查找的元素必须跟你声明list<type>name的type一致。
你的这个问题稍微想想就能解决
#5
棉雨2011-10-06 16:04
回复 4楼 lqsh
嗯,那个程序我写出来了。
1