2 lck32578 lck32578 于 2015.06.06 18:48 提问

c++stl中list的end到底是什么,尾后迭代器到底是如何实现的?

c++stl中list的end到底是什么,尾后迭代器到底是如何实现的?如果end是空,那么哪来的--end?

5个回答

lck32578
lck32578   2015.06.07 21:55
已采纳

找到了,是首尾公用头节点,作为特殊节点。

dominating413421391
dominating413421391   2015.06.06 21:16

Return iterator to end 指向list尾部的指针

lck32578
lck32578 那要如何实现?
大约 3 年之前 回复
fcxxxer
fcxxxer   2015.06.09 00:22

是这项list尾部的指针,方便人们找到list的尾部。

nswcfd
nswcfd   2015.06.09 11:44

有很多种方案,比如list对象自己的地址,或者(void *)1、(void *)-1等。

oyljerry
oyljerry   Ds   Rxr 2015.06.06 19:52

可以理解为一个特殊标志位。类似EOF等这些。

lck32578
lck32578 能具体一下吗,如果你来实现的话…
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【STL】迭代器与List的模拟实现
什么是List List是STL库(标准模板库)中的一个容器。它的实质上就是一个双向链表,而且要注意的是,这个双向链表是有头的; 这样的设计是STL中一个很巧妙的地方, 它解决了: (1)插入数据时的判断问题,不用判断链表中有没有数据 (2)实现end()函数的时候仅仅只用一个 _head->_prev就可以找到 迭代器 这里,我们还要介绍另一个概念,迭代器 所谓迭代器,就
STL array中的end方法(11)
public member function std::array::end iterator end() noexcept; const_iterator end() const noexcept; Return iterator to end Returns an iterator pointing to the past-the-end eleme
c++ stl list 迭代器简单实现
#includetemplateclass node{    public:        T data;        void * pre;        void * next;};templateclass iter{    public:        typedef node * lnode;        lnode pnode;        iter(iter& a):pnode
STL 反向迭代器(rbegin,rend)
#include #include using namespace std; int main() { sets; s.insert(1); cout<<*s.rbegin(); return 0; } 直接输出最后一个元素 以下为转载的文章------------------->>>>>>点击打开链接 rbegin和rend,很有用!
STL list erase 删除一个节点后,迭代器会失效吗
STL list erase 删除一个节点后,迭代器会失效吗
vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个
vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个 原因: Cont是容器的类型,容器中定义了一个此容器所用的游标(迭代器)的类型,叫iterator,于是Cont::iterator it;就定义了一个名叫it的迭代器。 啥?我咋知道容器中怎么定义了iterator这个类型?嘿嘿,这就是一个Concept了。这是约定,这是规矩!STL中所有的容
迭代器和迭代器类型 begin和end操作 vector迭代器自增和解引用
iterator往往表示两个不同的的事物,一般意义上指迭代器;具体时指由容器定义的具体的iterator类型,如vector 若一种类型支持一组确定的操作(这些操作可用来遍历容器内的元素,并访问这些元素的值),我们就称这种类型为迭代器。 各容器类都定义了自己的iterator类型,用于访问容器内的元素。即每个容器都定义了一个名为iterator的类型,而这种类型支持(概念上的)迭代器的各种操作
C++ iterator 前++ 后++ 效率区别
stl中的遍历可以是一下两种之一 for(iterator it =begin(); it != end(); ++it)  此处的 begin()《==》this->begin()        或者 for(iterator it = begin(); it != end(); it++)         区别是什么呢??        对于两种方式来说: for(iterat
C/C++容器和迭代器理解
为什么要有容器?    我知道有数组,但数组有一个弊端,它是固定的,不可变。这个经常会导致出现数组越界导常的错误。并且还需要事先知道这个数组的长度才可以定义。 但很多时候,我们并不知道未来将会发生什么,所以我们创造了容器,它是不固定的,可变的,可以根据元素的增加而增加,每次增加原数组的1.5倍。为什么是1.5倍呢,因为2倍太大了,1倍太小,所以为了保证效率,择中选1.5倍。 数组与容器
C++ STL 迭代器失效问题
之前看《C++ Primier》的时候,也解到在顺序型窗口里insert/erase会涉及到迭代器失效的问题,并没有深究。今天写程序的时候遇到了这个问题。 1 莫名其妙的Erase     最初我的程序是酱紫的,别说话,我知道这样是有问题的,可这样是最直观的想法 int arr[]={0,1,2,3,4,5,6,7,8,9,10};   vectorint> a(arr,arr+s