`

C++ STL中判断list为空,size()==0和empty()有什么区别

    博客分类:
  • c++
 
阅读更多

关于两个的区别,首先size()==0为bool表达式,empty()为函数调用,这一点很明显。查看源代码

bool empty() const { return _M_node->_M_next == _M_node; }    
size_type size() const {    
  size_type __result = 0;    
  distance(begin(), end(), __result);    
  return __result;    
}  

 可以看出empty直接检查标记节点,而size是通过求首尾迭代器的距离来获取元素个数的。

 

查看的源代码来自http://www.sgi.com/tech/stl/download.html

分享到:
评论

相关推荐

    c++ stl list总结

    C++ STL(Standard Template Library,标准模板库)中的`list`是一种双向链表容器,它提供了高效的操作,如插入和删除元素。在这个总结中,我们将深入探讨`list`的特性和使用方法,以及如何在实际编程中充分利用它。...

    [C++][STL] C++ STL 之 List

    总结,`list`作为C++ STL中的重要容器,它的特性和操作为处理动态序列提供了便利。理解并熟练使用`list`能够帮助开发者编写更加高效和灵活的C++代码。通过实际编程练习,你可以进一步掌握`list`的用法,并将其应用于...

    C++ STL vector 容器介绍

    6. 尺寸操作:`vector`提供了`size()`方法返回元素数量,`capacity()`返回当前分配的内存大小,`reserve()`用于预分配内存以避免不必要的扩容,`empty()`检查容器是否为空。 7. 迭代器失效:当`vector`进行重新分配...

    数据结构 C++ STL库及用法详解

    数据结构 C++ STL 库及用法详解 本文将对 C++ STL 库中的各种数据结构进行详细介绍,包括队列、双端队列、优先队列、栈和... C++ STL 库中的数据结构各有其特点和用法,了解并掌握它们的用法是 C++ 程序员的必备技能。

    SGI STL list相关代码

    SGI STL(Standard Template Library,标准模板库)是C++编程中的一种库,它提供了高效且灵活的数据结构和算法。这个库最初由Silicon Graphics, Inc.(SGI)开发,后来被纳入C++标准库中,成为现代C++编程不可或缺的...

    心希盼 c++ STL Stack(栈)

    在C++中,Stack提供了push(入栈)、pop(出栈)、top(查看栈顶元素)和empty(判断栈是否为空)等基本操作。 Stack可以基于两种不同的容器来实现:List和Vector。List通常通过双向链表实现,而Vector则使用动态...

    list_list_STL_C++_

    在C++编程语言中,标准模板库(Standard Template Library,STL)是不可或缺的一部分,它提供了许多高效的数据结构和算法。其中,`list`是一种序列容器,专门用于处理链表数据结构。本篇文章将深入探讨`list`容器的...

    STL中list的使用

    在标准模板库(STL)中,`list`容器是一个双向链表,它提供了高效的插入和删除操作,尤其是在列表的头部或尾部进行操作时,性能尤为突出。下面将详细介绍`list`的各种功能和用法。 ### 创建和初始化 1. **空list**...

    自己整理的C++ STL代码 很详细

    在C++编程中,STL(Standard Template Library,标准模板库)是一组高效、泛型的容器、算法和迭代器的集合,极大地提高了程序的可重用性和开发效率。本篇将详细介绍C++ STL中的一些关键容器,如priority_queue、...

    c++STL容器讲义与演示

    C++ STL(Standard Template Library,标准模板库)是C++编程中极其重要的一部分,它提供了一组高效、灵活且可重用的容器、迭代器、算法和函数对象。本讲义将深入探讨STL容器,这些容器是STL的核心组成部分,它们在...

    vector list map pair stl 标准模板库 c++

    - `erase()`可以按键删除元素,`empty()`检查容器是否为空,`size()`返回元素数量。 4. **pair**: - `pair`是用于存储两个元素的结构体,通常用于表示键值对或者临时存储两个相关的值。 - `make_pair()`函数...

    心希盼 C++ STL Queue(队列)

    C++ STL(Standard Template Library,标准模板库)是C++编程语言中的一部分,它提供了一系列高效、可重用的数据结构和算法。其中,Queue(队列)是STL中的一个容器适配器,它模拟了计算机科学中的基本队列数据结构...

    C++中stl总结

    - `empty()`: 判断容器是否为空。 - `[]`: 直接访问指定索引处的元素。 - `push_back()`: 在容器尾部添加新元素。 - `pop_back()`: 删除容器尾部的元素。 - `insert()`: 在指定位置插入元素,时间复杂度为O(N)...

    c++stl使用例子大全

    本篇文章通过多个示例介绍了 C++ 标准模板库(STL)中容器的基本用法,包括 `vector`, `deque`, `list`, `set`, `multiset`, `map`, `multimap`, `stack`, `queue`, 和 `priority_queue` 的基本操作。掌握这些容器...

    C++中list用法

    - `empty()`:判断list是否为空。 - `get_allocator()`:返回list使用的分配器。 2. **元素访问** - `back()`:返回list的最后一个元素。 - `front()`:返回list的第一个元素。 - `rbegin()`:返回指向list中...

    C++中STL使用总结

    STL不仅限于C++,C语言中也有相应的库来实现STL的功能,但是C++的STL功能更为强大和方便。在C++中,STL主要包含六大组件:容器(Containers)、迭代器(Iterators)、算法(Algorithms)、仿函数(Function Objects...

    心希盼 c++ STL 单链表源码

    在C++编程语言中,STL(Standard Template Library,标准模板库)是其核心部分,提供了许多高效且灵活的数据结构和算法。其中,单链表是STL中的一个基础容器,它通过节点间的指针链接数据元素,允许高效地进行插入和...

    哈希表应用C++_STL_hash

    - **操作函数**:`insert()`用于插入元素,`find()`用于查找元素,`erase()`用于删除元素,`count()`用于统计某个元素出现的次数,`empty()`检查是否为空,`size()`返回元素数量。 4. **自定义哈希和等价关系** -...

    C++ STL应用说明

    C++ STL,全称为Standard Template Library,是C++标准库的核心组成部分,它提供了一系列高效的数据结构和算法,极大地增强了C++编程的效率和灵活性。STL的出现使得程序员可以使用预定义的高质量组件来处理数据,而...

    c++ STL标准程序库

    C++ STL(Standard Template Library,标准模板库)是C++编程语言中不可或缺的一部分,它提供了一组高效且灵活的容器、算法和迭代器,极大地提高了程序员的生产力。STL的核心概念包括容器、迭代器、算法和函数对象。...

Global site tag (gtag.js) - Google Analytics