首页 > 编程语言 >C++系列二:STL教程-迭代器

C++系列二:STL教程-迭代器

时间:2023-08-12 11:55:21浏览次数:34  
标签:容器 迭代 iterator STL C++ 前向 随机 双向

目录


前言

……。

迭代器

//它可以是需要的任意类型,通过迭代器可以指向容器中的某个元素,如果需要,还可以对该元素进行读/写操作。
常用的迭代器按功能强弱分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器 5 种。输入迭代器和输出迭代器比较特殊,它们不是把数组或容器当做操作对象,而是把输入流/输出流作为操作对象。
前向迭代器(forward iterator)
假设 p 是一个前向迭代器,则 p 支持 p,p,*p 操作,还可以被复制或赋值,可以用 == 和 != 运算符进行比较。此外,两个正向迭代器可以互相赋值。

双向迭代器(bidirectional iterator)
双向迭代器具有正向迭代器的全部功能,除此之外,假设 p 是一个双向迭代器,则还可以进行 --p 或者 p-- 操作(即一次向后移动一个位置)。

随机访问迭代器(random access iterator)
随机访问迭代器具有双向迭代器的全部功能。除此之外,假设 p 是一个随机访问迭代器,i 是一个整型变量或常量,则 p 还支持以下操作:

array	随机访问迭代器
vector	随机访问迭代器
deque	随机访问迭代器
list	双向迭代器
set / multiset	双向迭代器
map / multimap	双向迭代器
forward_list	前向迭代器
unordered_map / unordered_multimap	前向迭代器
unordered_set / unordered_multiset	前向迭代器
stack	不支持迭代器
queue	不支持迭代器

正向迭代器	容器类名::iterator 迭代器名;
常量正向迭代器	容器类名::const_iterator 迭代器名;
反向迭代器	容器类名::reverse_iterator 迭代器名;
常量反向迭代器	容器类名::const_reverse_iterator 迭代器名;


标签:容器,迭代,iterator,STL,C++,前向,随机,双向
From: https://www.cnblogs.com/zhouyitty/p/17624586.html

相关文章

  • 浅析C++gnu pbds库
    pbds俗称平板电视,__gnu_pbds自带了封装好了的平衡树、字典树、hash数据结构,速度快过\(STL\)Ⅰ.引入想要使用\(pbds\),必须先要添加头文件,\(pbds\)并不属于bits/stdc++.h的一部分,所以也只能在\(g++\Mingw64\)的环境下食用。以下是头文件:#include<bits/extc++.h>以下是命名空......
  • RichEdit 选中文本的高亮显示 VC++
    RichEdit控件失去焦点后,选中文本不再高亮显示。有两种方法可以改变,使得控件失去焦点仍然保持高亮:方法一:创建控件时设置ES_NOHIDESEL风格m_hWndREdit=CreateWindow(_T("RichEdit20W"),NULL,//RICHEDIT_CLASSRichEdit20ARichEdit20WWS_CHILD|WS_VISIBLE|ES......
  • C++实现一键关闭桌面
    方法一:C++关闭桌面,explorer.exe#include<Windows.h>#include<TlHelp32.h>#include"resource.h"#pragmawarning(disable:4996)voidtaskkill(constchar*name){ HANDLEinfo_handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//拍摄系统中所有进......
  • c++11特性汇总
    c++11/14/17新特性参考C++11系列-什么是C++11大丙教程目录1、关键字及新语法1.1、auto关键字及用法1.2、nullptr关键字及用法1.3、for循环语法2、智能指针内存管理2.1、std::shared_ptr2.2、std::weak_ptr2.3、std::unique_ptr3、文件IO3.1、标准......
  • C++快速排序
    快速排序介绍:基础思路:首先快速排序是由冒泡排序所改进的,都是通过多次比较和交换来实现排序,但快速排序是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,分别对这两部分记录继续进行排序,以达到整个序列有序。思路详解:(1)首先我们先设定......
  • [转]c++ function使用方法
    原帖:https://blog.csdn.net/myRealization/article/details/111189651 cppreference https://en.cppreference.com/w/cpp/utility/functional/functionboost源码剖析之:泛型函数指针类boost::functionhttps://blog.csdn.net/pongba/article/details/1560773c++模板偏特化 h......
  • WEB实战手册-基于C++(1)
    目录oat++oat++oat++是一个轻量级高性能Web服务开发框架,采用纯C++编写而成。特性:特性快速零依赖异步服务器,高性能,在单个服务器上同时处理超过500万个WebSocket连接多线程服务器(简单的API)连接无感知,可以使用任何传输类型,无论是SSL后端、套接字......
  • C++欧几里得算法求最大公约数和最小公倍数
    定义最大公约数即为GreatestCommonDivisor,常缩写为gcd。一组整数的公约数,是指同时是这组数中每一个数的约数的数。一组整数的最大公约数,是指所有公约数里面最大的一个。那么如何求最大公约数呢?我们先考虑两个数的情况。欧几里得算法过程如果我们已知两个数\(a\)和\(......
  • C++ 20新版本的重大更新来了
    作为Google和Microsoft使用的核心编程语言,C++新版本获得了国际标准化组织的批准。国际标准化组织(ISO)C++工作组,即第21工作组(WG21),已同意发布C++20版本的最终版内容。对于这个有着35年历史的C++编程语言,这是自2017年发布C++17版本后的首次重大更新。WG21C++ISO委员会......
  • 关于dev c++显示中文不显示,乱码和生成的可执行文件中文乱码
    1.不显示中文工具----编译器选项----显示-----去掉底下的复选框(第一个consolas下面)2,运行窗口中文乱码方法:1、工具—编译选项2、在第一个框中填入-fexec-charset=gbk3、勾选“编译器加入以下命令”4、重新编译一次以后运行。  ......