`
dwangel
  • 浏览: 265851 次
社区版块
存档分类
最新评论

C++ 遍历清空指针元素的代码

阅读更多
template<typename T>
	static void clear_list(list<T*> & itemList) {
		cout<<"clear list start" <<endl;
		typename list<T*>::iterator it;
		if (itemList.size() == 0) {
			cout<<"clear list end" <<endl;
			return;
		}
		for (it = itemList.begin(); it != itemList.end();) {
			T* p = *it;
			it = itemList.erase(it);
			cout<<"delete "<< p->id <<endl;
			delete p;
		}
		cout<<"clear list end" <<endl;
	}


网上看到的erase后对it++的操作的示例代码有问题,不知道是不是mingw的实现库跟stl有差别。
条件清空
template<typename T>
	static void clear_list(list<T*> & itemList) {
		cout<<"clear list start" <<endl;
		typename list<T*>::iterator it;
		if (itemList.size() == 0) {
			cout<<"clear list end" <<endl;
			return;
		}
		for (it = itemList.begin(); it != itemList.end();) {
                           
			T* p = *it;
                           if (p->state=="offline") {
			it = itemList.erase(it);
			cout<<"delete "<< p->id <<endl;
			delete p;
                           } else {
                              ++it;
                           }
		}
		cout<<"clear list end" <<endl;
	}
分享到:
评论

相关推荐

    c++中指针的详细介绍

    3. **空指针**:`NULL`或`nullptr`表示没有指向任何对象的指针,可以用来初始化或清空指针。 4. **数组与指针**:在C++中,数组名实际上是一个指向其首元素的指针,因此指针可以用来遍历数组。 四、动态内存管理 ...

    C++源代码 恶搞一下,你懂的,嘿嘿。

    `**:这行代码允许我们在后续的代码中直接使用`std`命名空间下的元素(如`cout`),而无需在每次调用时都加上`std::`前缀。 #### 3. 主函数 - **`int main()`**:这是C++程序的入口点,通常返回一个整数值表示程序...

    c++课程设计 c++通讯录代码

    `clear()`方法通过迭代器遍历列表,释放每个元素所占用的内存,然后清空列表。`erase()`方法则删除一个元素并返回迭代器到下一个元素的位置。 `AddressList`类是核心的通讯录类,它包含了一个`RecordList`类型的...

    C++“指针”学习建议.pdf

    通过编写和理解代码,尤其是涉及指针的代码,可以加深对指针概念的理解。此外,多看书,如《C++ Primer》和《Effective C++》等经典书籍,它们提供了丰富的实例和解释,有助于巩固理论知识。最后,解决实际问题,如...

    C++仓库管理系统简单代码

    【C++仓库管理系统简单代码详解】 本篇将详细介绍一个基于C++实现的仓库管理系统的核心功能和设计思路。这个系统能够实现基础的仓库管理操作,包括新增产品、删除产品、查询产品以及显示所有产品信息,适合C++课程...

    二叉链表的基本操作 构建 遍历 求深 叶数 结点数 销毁

    构建二叉链表可以采用递归或迭代的方式,例如,按照层次顺序或前序、中序、后序遍历的顺序插入元素。 2. **遍历**: 遍历是访问二叉链表中所有节点的过程,通常有三种主要方式: - **前序遍历**:先访问根节点,...

    C++ vector的讲解

    * `v.cbegin()` 返回向量头指针,该指针不能修改向量中元素(C++11) * `v.cend()` 返回向量尾指针,该指针不能修改向量中元素(C++11) * `v.rbegin()` 反向迭代器,指向最后一个元素 * `v.rend()` 反向迭代器,...

    用指针实现数据结构顺序表的几种功能

    下面我们将依次探讨插入、判断表是否为空、遍历、获取指定位置元素、查找、获取前后继、删除、清空和销毁顺序表这九个功能。 1. 插入操作:在顺序表的某个位置插入一个新元素,首先需要确保有足够的空间。如果当前...

    C++链表基本操作 初始化 插入 删除 输出 清空

    以上就是链表的基本操作,理解并掌握这些操作对于编写高效的C++代码至关重要。在实际应用中,链表经常与其他数据结构结合,如栈、队列、树等,形成更复杂的数据结构,解决更复杂的算法问题。因此,熟练掌握链表操作...

    c++链栈源代码实现

    ### C++链栈源代码实现的关键知识点 #### 实验背景与目标 本次实验的主要目的是通过C++编程语言来实现链栈的基本操作,并以此为基础解决实际问题。具体来说,实验涉及两个部分: 1. **利用栈解决实际问题**:判断...

    c++实现单链表源代码

    在C++编程中,单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的指针。本教程将详细解释如何使用C++实现单链表,包括链表的基本操作,如插入、删除、遍历等。 首先,...

    基于C++的列表类,用法简单

    5. **遍历元素**:迭代遍历列表中的所有元素。 6. **查找元素**:搜索列表中是否存在特定值的元素。 7. **大小操作**:获取列表当前的元素数量,或者清空列表。 8. **排序操作**:对列表进行升序或降序排列。 在...

    C++链表的具体实现,很详细

    这需要遍历链表以找到该元素及其前一个节点,以便正确地更新指针。 #### 五、总结 本文详细介绍了如何使用C++语言实现单链表,包括链表的基本操作。链表作为一种重要的数据结构,在实际编程中有着广泛的应用。通过...

    C++线性表相关知识

    插入和删除操作在链表中通常比在数组中更高效,因为只需要改变相邻节点的指针即可,时间复杂度为O(1),但访问中间元素时需要遍历链表,时间复杂度为O(n)。 C++线性表的抽象数据类型(ADT)定义了线性表的基本操作,...

    栈_顺序存储c代码

    代码可能会定义一个结构体来表示栈,包含栈顶指针和栈的容量,以便管理元素的添加和删除。 2. **创建栈**: 创建栈时,需要指定栈的初始大小。在代码中,可能会有一个函数`createStack(size_t capacity)`,用于...

    C++实现双向链表(完整代码)

    这个`DoublyLinkedList`类提供了丰富的操作,如添加元素、删除元素、遍历链表以及检查链表是否为空。这些功能对于理解和实践双向链表的基本操作至关重要。在实际应用中,可以扩展此类以支持更多的高级操作,例如插入...

    同学 通讯录 C++课程设计 源代码

    - 实现:遍历整个链表,逐个释放内存空间,并将头指针置为`NULL`。 3. **获取通讯录大小 (`BookSize`)** - 功能:返回当前通讯录中的联系人数目。 - 实现:遍历整个链表,统计节点数量。 4. **判断通讯录是否为...

    C++堆栈类模板实现代码

    在构造函数中,我们需要分配内存来存储堆栈的元素,并初始化堆栈的大小和栈顶指针。在析构函数中,我们需要释放堆栈所占用的内存。 判空函数用于判断堆栈是否为空,判满函数用于判断堆栈是否已满。清空函数用于清空...

Global site tag (gtag.js) - Google Analytics