`
jiangwenfeng762
  • 浏览: 288202 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

c++ STL标准容器之Iterator使用

阅读更多

C++ STL绝大多数标准容器都提供了Iterator,一些容器,比如priority_queue,因为语意上就不应该允许随便遍历容器中的元素,所以也就没有Iterator了。

 

23种经典设计模式中就有迭代器模式,java集合框架也实现了这个模式:

 

package java.util;


public interface Iterator<E> {

    boolean hasNext();

    E next();


    void remove();
}

 

c++的迭代器要比java更灵活,主要体现在:

1.java只有从前向后的一种迭代器,c++除了从前向后迭代器外,还提供了从后向前的迭代器,比如:

 

map<int,int> amap;
amap.insert(pair<int,int>(1,1));
amap.insert(pair<int.int>(2,2));
map<int,int>::iterator it;
for(it = amap.begin();it != ampa.end();it++)//从前向后
{
    cout<<"key:"<<it->first<<" value:"<<it->second<<endl;
}
map<int,int>::reverse_iterator rit;
for(rit = amap.rbegin();rit != amap.rend();rit++)//从后向前
{
     cout<<"key:"<<rit->first<<" value:"<<rit->second<<endl;
}

 

2.c++除了iterator之外,还提供了const_iterator,后者只能读取集合中的数据,但是不能改变其值.

 

3.java的迭代器貌似只能单步自增,而c++的迭代器 除此之外,还可以实现算数操作,比如+n,-n,这样对于需要随机读取某个元素的场景就就很有用了,但是,貌似只有 vector的iterator才支持算数操作。也就是说前面例子中的迭代器it是不能进行 it = it+n之类的操作的。这一点要切记。

 

 

关于c++ iterator比较完整阐述的一篇博文:

http://wenku.baidu.com/view/1b325dc7aa00b52acfc7cafb.html

分享到:
评论

相关推荐

    C++_STL之set容器使用方法

    ### C++ STL之set容器使用方法 #### 一、引言 在C++标准模板库(STL)中,`set`容器是一种非常重要的关联容器,主要用于存储唯一元素,并且这些元素会根据其键值自动排序。`set`内部通常采用红黑树(一种自平衡的二叉...

    c++标准库STL手册

    C++标准模板库(STL)是C++编程语言中的一个重要组成部分,它提供了一组高效、可重用的容器、迭代器、算法和函数对象,大大简化了数据结构和算法的实现。STL手册通常会详细阐述这些组件的使用方法,提供实例代码,...

    c++ STL标准库

    例如,通过使用STL容器和算法,可以避免手动管理内存,减少错误的可能性。同时,STL的泛型特性使得代码可以处理多种数据类型,增加了代码的通用性。 在《Standard C++ Library Reference》这本书中,读者可以深入...

    STL的容器deque的使用

    `deque`(双端队列)是C++标准模板库(STL)中的一种重要容器,它提供了类似数组的功能,同时支持在两端进行高效插入和删除操作。与vector相比,deque在两端操作时通常具有更好的性能,因为它不需要移动大量元素。...

    c++/STL容器设计相关

    总结,STL容器在C++编程中扮演着核心角色,理解和熟练使用它们是提升代码质量和效率的关键。通过学习STL容器的设计原理和使用技巧,开发者可以更好地应对各种数据结构需求,实现更加灵活、高效的代码。

    C++STL详解PPT

    C++STL 库是 C++ 语言中非常重要的一部分,它提供了许多有用的容器、算法和迭代器,帮助开发者更方便地编写高效、可重用的代码。 泛型程序设计是 C++ 语言中非常重要的一部分,它允许开发者编写通用的代码,从而...

    c++STL学习——各种容器的技术总结和用法代码实例

    在"c++STL学习——各种容器的技术总结和用法代码实例"中,我们将深入探讨C++ STL的容器部分。 1. 容器概览: C++ STL中的容器是一些类模板,用于存储和管理元素集合。常见的容器有向量(vector)、列表(list)、...

    C++ STL 使用手册

    3. **智能指针(Smart Pointers)**:虽然不是STL的一部分,但`std::shared_ptr`、`std::unique_ptr`等智能指针在使用STL容器时非常有用,可以自动管理内存。 4. **RAII(Resource Acquisition Is Initialization)...

    深入C++STL中文版

    接下来,我们将围绕“深入C++STL中文版”这一主题展开详细的讲解,涵盖C++ STL的基本概念、核心组件以及如何利用STL提高编程效率等方面。 ### C++ STL简介 C++标准模板库(Standard Template Library,简称STL)是...

    c++ STL编程手册

    STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它为程序员提供了高效且灵活的数据结构和算法。STL的主要目标是提高代码的可读性、可维护性和性能,通过使用预定义的泛型...

    c++stl标准库源码

    c++ stl The Standard Template Library, 容器(Container) 迭代器(Iterator) 算法(Algorithm)仿函数(Function object)迭代适配器(Adaptor)空间配制器(allocator)

    C++ STL库源代码(SGI版本)

    STL(Standard Template Library,标准模板库)是C++编程语言中的一个重要组成部分,它提供了一系列高效、可重用的数据结构和算法。在这个“C++ STL库源代码(SGI版本)”中,我们主要关注的是SGI(Stanford Graphics ...

    C++《STL》讲义.pdf

    容器是STL的核心概念之一,它代表一种数据结构,用于存储有限数量的数据元素。在STL中,容器被分为序列式容器和关联式容器。序列式容器,如vector、deque和list,它们的特点是元素的存储有顺序,可以根据特定的规则...

    C++ STL源码详解

    C++ STL,全称为Standard Template Library(标准模板库),是C++编程中极其重要的组成部分,它为程序员提供了高效且灵活的数据结构和算法。STL的主要目标是提高代码的可读性和可重用性,通过使用泛型编程和模板机制...

    c++stl库头文件及其源码

    C++ STL(Standard Template Library,标准模板库)是C++编程语言中不可或缺的一部分,它提供了一组高效且灵活的容器、算法和迭代器,极大地提高了程序员的生产力。STL库的头文件是C++程序员经常引用的核心部分,...

    STL容器使用代码

    STL(Standard Template Library,标准模板库)是C++编程语言中的一个重要组成部分,它提供了高效且灵活的数据结构和算法。在STL中,容器是一类能够存储数据的对象,包括vector、string、deque、queue、list、set、...

    C++ STL库函数总结(纯手打,主要偏向ACM竞赛方面使用)

    C++ STL 库函数总结是指 C++ 标准模板库(Standard Template Library)的函数总结,主要用于 ACM 竞赛方面的应用。本总结涵盖了 STL 库的集合(set)部分,包括其定义、成员函数、迭代器、元素操作等方面的知识点。 ...

Global site tag (gtag.js) - Google Analytics