`
xuning2516
  • 浏览: 8326 次
  • 性别: Icon_minigender_1
  • 来自: 江西
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

forward list源码

 
阅读更多

forward_list 源码学习

//forward_list的迭代器是forward_iterator,因此在forward list中需要注意保存前面一个元素的iterator,方便插入和删除。
auto posbefore=flist.before_begin();
for(auto pos=flist.begin();pos!=flist.end();++pos,++posbefore)

例如在remove_if的成员函数 ,删除的是当前元素的后一个元素。

template <class _Tp, class _Alloc> 
template <class _Predicate>
void slist<_Tp,_Alloc>::remove_if(_Predicate __pred)
{
  _Node_base* __cur = &this->_M_head;
  while (__cur->_M_next) {
    if (__pred(((_Node*) __cur->_M_next)->_M_data))
      this->_M_erase_after(__cur);    //删除的是当前元素的下个元素
    else
      __cur = __cur->_M_next;
  }
}
_Slist_node_base* _M_erase_after(_Slist_node_base* __pos)
  {
    _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next);   //保存当前元素下一个元素的指针,以便删除
    _Slist_node_base* __next_next = __next->_M_next;
    __pos->_M_next = __next_next;
    destroy(&__next->_M_data);
    _M_put_node(__next);
    return __next_next;
 }





分享到:
评论

相关推荐

    c++ ,vs2019, cpp20规范之 forward-list 源码分析

    c++ ,vs2019, cpp20规范之 forward-list 源码分析

    chicken-forward-list:转发列表数据结构

    [wrap-git]directory = chicken-fordward-listurl = https://github.com/chicken-libraries/chicken-fordward-list.gitrevision = main[provide]chicken = chicken_fordward_list_dep 下一步应该是将该包添加到您的...

    AddDateToList_VC++源码_

    "AddDateToList_VC++源码_"这一标题暗示了我们的重点是关于如何将日期或其他数据添加到ListControl中,这在开发Windows应用程序时非常常见。ListControl通常用于显示结构化数据,如表格形式的数据,它可以在对话框、...

    STL源码剖析简体中文版.pdf

    - 前向迭代器(Forward Iterator) - 双向迭代器(Bidirectional Iterator) - 随机访问迭代器(Random Access Iterator) - 每种容器通常提供特定类型的迭代器来访问其内部元素。 #### 四、算法(Algorithms) ...

    RDesktop1.7.0 (源码)

    RDesktop currently runs on most UNIX based platforms with the X Window System, and other ports should be fairly straightforward. RDesktop is released under the GNU Public Licence (GPL), version 3. ...

    linux-2.6.28.8 网桥源码部分分析

    `bridge_list`链表则维护了系统中的所有网桥。`bridge_add_dev()`函数用于将一个新的网络接口添加到网桥,而`bridge_del_dev()`负责从网桥中移除接口。这些操作涉及到接口状态的管理和网络流量的重新定向。 网桥的...

    ognl源码包值得用一用

    很好的xwork的资源包public void doPost(HttpServletRequest request, HttpServletResponse response) throws ... request.getRequestDispatcher("upload/result3.jsp").forward(request, response);

    struts1.2 from表单提交包含list的对象

    这个Bean应该包含一个List属性,例如`List&lt;Product&gt;`,其中Product是另一个Bean,包含了商品的各个属性。在表单提交后,Struts的默认数据绑定机制会尝试将请求参数自动绑定到ActionForm的属性上。 接着,Action类会...

    STL.rar_STL list pdf

    在这个名为“STL.rar”的压缩包中,包含了关于STL List容器以及迭代器使用的源码示例,旨在帮助开发者深入理解STL List的工作原理和迭代器的运用。 首先,我们来看STL中的List。List是一种双向链表,它允许在任意...

    struts tiles实现源码

    - **ActionForward与Tiles定义的映射**:Struts的`ActionForward`可以映射到Tiles定义,这样在Action执行完成后,可以根据Forward直接渲染对应的Tiles页面。 5. **动态内容和参数传递** - **动态属性(Dynamic ...

    visual stdio 2018新版本 c++ stl源码 word文档

    在源码中,可以看到不同类型的迭代器,如input_iterator、output_iterator、forward_iterator、bidirectional_iterator和random_access_iterator,它们分别对应不同的操作能力。迭代器的实现通常涉及指针和虚函数,...

    (源码)基于C++的数据结构与算法速查表.zip

    # 基于C++的数据结构与算法速查表 ## 项目简介 本项目是一个基于C++的数据结构与算法速查表,旨在为开发者提供快速参考...3. 列表 (std::list 和 std::forwardlist) 用途中间开头插入、高效排序。 不适用直接访问。

    Struts分页显示源码实例

    ### Struts分页显示源码实例解析 #### 一、背景介绍 在Web应用开发中,特别是使用MVC架构的框架如Struts时,分页显示是常见的需求之一。分页不仅能提高用户体验,还能减轻服务器压力。本文档将详细介绍如何在...

    提交多行数据到Struts的ActionForm的List属性中

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MyForm myForm = (MyForm) form; List&lt;Item&gt; items = ...

    STL 源码剖析.zip

    - 前向迭代器(Forward Iterator):读写,单向前进,比输入迭代器功能更强。 - 双向迭代器(Bidirectional Iterator):读写,双向前进。 - 随机访问迭代器(Random Access Iterator):提供所有方向的访问,...

    jspjsp基础课程源码

    5. **JSP动作(JSP Actions)**:如`&lt;jsp:include&gt;`, `&lt;jsp:forward&gt;`, `&lt;jsp:param&gt;`等,它们用于动态地插入内容、转发请求或传递参数。 6. **EL(Expression Language)**:一种简洁的表达式语言,用于访问...

    数据结构实验源码及报告

    C++中的`std::list`和`std::forward_list`提供了链表实现。 3. **栈**:是一种后进先出(LIFO)的数据结构,常用于函数调用和表达式求值。C++标准库提供了`std::stack`容器适配器。 4. **队列**:是一种先进先出...

    C++经典趣味编程源码(三个版本txt、word、pdf)

    - 链表:C++标准库中的std::list和std::forward_list。 - 树结构:二叉树、AVL树、红黑树等,通常在STL容器如std::set和std::map中实现。 - 图:虽然C++标准库未直接提供图数据结构,但可以通过自定义结构实现。 ...

    Struts 上传源码

    List&lt;FileItem&gt; items = upload.parseRequest(request); for (FileItem item : items) { if (!item.isFormField()) { String fileName = new File(item.getName()).getName(); // 存储文件到服务器的路径 File...

    一个Struts1多文件上传实例(附Form中传List示例)

    在本文中,我们将深入探讨一个Struts1实现的多文件上传实例,同时也会涉及如何在Form中传递List类型的数据。这个实例对于理解Struts1的请求处理和文件上传机制非常有帮助。 首先,我们需要了解Struts1的ActionForm...

Global site tag (gtag.js) - Google Analytics