首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++对std :: set,std :: map等的常量时间开始/结束/ rbegin/rend执行吗?

在C++中,std::set和std::map是关联容器,它们的元素是按照键值排序的。因此,它们的迭代器提供了常量时间复杂度的begin()、end()、rbegin()和rend()成员函数。

begin()函数返回指向容器中第一个元素的迭代器,end()函数返回指向容器中最后一个元素之后的迭代器。这两个函数可以用于遍历容器中的所有元素。

rbegin()函数返回指向容器中最后一个元素的反向迭代器,rend()函数返回指向容器中第一个元素之前的反向迭代器。这两个函数可以用于反向遍历容器中的所有元素。

需要注意的是,std::set和std::map的迭代器不支持直接修改容器中的元素。如果需要修改元素,需要使用其他方法,例如使用迭代器的erase()和insert()函数。

总之,std::set和std::map的常量时间复杂度的begin()、end()、rbegin()和rend()成员函数可以用于访问容器中的元素,并且可以方便地进行遍历和反向遍历。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

STL开发之迭代器(Iterator)

C++在操作容器时更加推荐使用迭代器进行操作,C++标准库为每一种标准容器都定义了一种迭代器类型同时也支持了部分容器使用下标进行访问。...1 迭代器定义 C++标准委员会对迭代器定义为:指向元素范围(如数组或容器)中某个元素,并能够使用一组操作符(至少使用自增(++)和解引用(*)操作符)遍历该范围中元素任何对象。...指针是最常见一种迭代器,指针可以指向数组中元素并使用自增运算符遍进行遍历,除了数组外,也可以使用迭代器向量、列表、集合容器进行遍历。...和eng方法将容器开始结束位置赋值给了迭代器变量,通过迭代器自增运算达到遍历整个容器目的。...} 如上代码所示,可以解决map迭代器失效问问题。

75810

【Example】C++ 标准库常用容器全面概述

pop_back 删除vector末尾处元素。 push_back 在vector末尾处追加一个元素。 rbegin 返回起始位置反向迭代器。 rend 返回末尾位置反向迭代器。...rbegin 指定反向受控序列开头。 rend 指定反向受控序列末尾。 size 元素数进行计数。 swap 交换两个容器内容。...rbegin 返回指向起始逆向迭代器。 rend 返回指向末尾逆向迭代器。 size 返回set元素数量。 swap 交换两个set。...基于红黑树 map 会根据键大小自动升序排序,基于哈希表则无序。 map 可以根据键映射直接修改元素值。但是,键却是常量无法修改,只能删除已有的键值再添加新。...rbegin 返回一个反向迭代器,此反向迭代器指向Map起始位置。 rend 返回一个反向迭代器,此反向迭代器指向Map末尾位置。 size 返回当前Map元素数量。 swap 交换两个Map

3.3K30
  • C++进阶:详细讲解容器setmap(pair、multiset、multimap)

    1.关联式容器与序列式容器 关联式容器和序列式容器是 C++ 中两种不同容器类型 关联式容器: 关联式容器主要包括 std::set, std::map, std::multiset, std:...插入、删除、查找操作平均时间复杂度是 O(log n)。 序列式容器: 序列式容器包括 std::vector, std::list, std::deque, std::array 。...这些容器是基于线性结构,元素在容器中位置是由插入顺序决定。 插入、删除、查找操作平均时间复杂度因容器类型而异,但在最差情况下,可能达到 O(n)。...这种结构允许通过键来检索和关联对应值,key代表键值,value表示与key对应信息 2.1pair定义 std::pair 是C++标准库中提供一个简单键值实现。...迭代器 reverse_iterator rbegin(); 返回指向set最后一个元素反向迭代器 reverse_iterator rend(); 返回指向set第一个元素前面的反向迭代器 const_reverse_iterator

    28310

    C++】—— list迭代器

    前言 ​ C++ STL(标准模板库)为我们提供了多种容器,vector、list以及stack; ​ 对于这些容器STL提供了统一遍历方法,那就是迭代器——可以高效地进行插入和删除操作。...通过迭代器,我们能够容器中元素进行遍历、读取、修改操作。...list::rbegin():返回指向最后一个元素逆向迭代器。 list::rend():返回指向第一个元素之前位置逆向迭代器。...接着使用逆向迭代器 rbegin() 和 rend() 逆向遍历,输出 5 4 3 2 1。 3.3、修改元素 通过非 const 迭代器,可以修改 list 中元素。...C++ STL 中 list 迭代器是操作 list 容器关键工具,通过它我们可以进行遍历、插入、删除操作。

    8710

    C++初阶:初识STL、String类接口详细讲解(万字解析)

    、集合(set)、映射(map。...string.h 头文件提供了一系列库函数,如 strlen、strcpy、strcat ,用于字符串进行操作。但是这些函数的确与字符串是分离,需要手动管理内存,容易出现越界访问问题。...rbegin() 反向开始,返回一个指向字符串最后一个字符迭代器 rend() 反向开始,返回一个指向字符串中第一个元素之前位置迭代器 std::string 类提供了多种类型迭代器,包括正向迭代器...反向迭代器(reverse_iterator):std::string::reverse_iterator 类型是用于以反向顺序遍历可修改字符串迭代器,可以通过 rbegin() 和 rend() 方法获取范围...反向迭代器允许从容器末尾向前遍历容器中元素。 rend 函数返回一个反向迭代器,指向容器中第一个元素之前位置。通常用于标记反向遍历结束位置。

    18510

    C++【一棵红黑树封装 setmap

    ,我们可以额外新增一个成员:header 指向最右节点,在调用 rbegin() 时其进行更新并返回即可,属于一个比较 中庸 解决方案,默认构造、拷贝构造、赋值、析构记得这个节点进行处理 额外新增一个节点...继续完善 set 新增迭代器、判空、求大小、计数 map 也是一样,新增 set 中新增功能 注:关于默认成员函数,编译器生成足够用了,因为此时 _t 是一个自定义类型,涉及拷贝、赋值问题时,...() { return _t.rbegin(); } reverse_iterator rend() { return _t.rend(); } const_reverse_iterator rbegin...:不能给常量对象赋值 注意: set普通对象对应也是 const 迭代器,但底层 红黑树 仍然是普通对象,返回普通迭代器无法转换为 set const 迭代器,需要通过特殊构造函数解决...---- 总结 以上就是本次关于 C++【一棵红黑树封装 setmap全部内容了,在本文中,我们首先将 红黑树 进行了完善,解决了一些深拷贝问题,新增了迭代器,同时还用反向迭代器适配器适配出了

    29830

    C++ STL 标准模板库(容器总结)算法

    String 字串操作容器 String字符串操作容器是C++标准中实现一个重要容器,其主要用于字符串高效处理,它和C风格中string.h并不是同一个库,两个库有极大差距,C库中string.h...,该容器可以方便、灵活地代替数组,容器可以实现动态对数组阔扩容删除各种复杂操作,其时间复杂度O(l)常数阶,其他元素插入和删除为O(n)线性阶,其中n为容器元素个数,vector具有自动内存管理机制...rstart, rend; rend = deq.rend(); for (rstart = deq.rbegin(); rstart !...正反向遍历集合元素: 通过迭代器实现集合容器正反向遍历,注意Set集合只能使用insert方法向集合插值....,end/rend迭代器,实现MAP映射容器元素正反向遍历.

    2.3K10

    c++】标准模板库STL入门简介与常见用法

    2、容器(Containers) 容器类是可以包含其它对象模板类,如向量类(vector)、链表类(list)、双向队列类(deque)、集合类(set)和映射类(map。...注意:算法都是全局函数模板,如:for_each( )、find()、count()和sort() 4、迭代器(Iterator) 迭代器类似于C++指针,是一个指示器,用来指示容器中某个元素,迭代器出现使得容器与算法分离成为可能...list特点:不支持随机访问,访问链表元素要从链表某个端点开始,插入和删除操作所花费时间是固定,即与元素在链表中位置无关;优势是在任何位置执行插入或删除动作都非常迅速;可以在需要时修改其自身大小...迭代器 begin()和end()返回头尾迭代器; rbegin()和rend()返回尾头反向迭代器:rbegin()返回最后一个元素迭代器,rbegin++返回倒数第二个元素。...;        //使用rbegin,rend显示c2所有元素        std::cout << "c2 (using rbegin, rend) = " ;        for(RevIter

    71610

    C++】学习string类:字符操作艺术

    它定义在头文件中,并位于std命名空间下。C++string类提供了一系列成员函数和操作符,用于操作和处理字符串。...学习C++string类也可以帮助我们更好地理解和应用其他C++标准库类和容器类,如vector、list。...(const char * s) 用常量来构造string类对象 string(const string&s) 拷贝构造函数 #include using namespace std...begin获取第一个字符迭代器 + end获取最后一个字符下一个位置迭代器 rbegin + rend rbegin获取最后一个字符迭代器 + rend获取第一个位置 范围for C++11支持更简洁范围...4.结语 总的来说,C++string类提供了丰富方法和操作符,方便我们字符串进行各种操作。使用string类可以避免手动处理字符串繁琐和容易出错问题,提高代码可读性和可维护性。

    10100

    C++ STL学习之【反向迭代器】

    ,涉及 萃取 操作,为了方便学习,这里实现是简易版本 1.1、反向思想 何谓反向?...结果:1 2 3 4 5 反向迭代器:反向遍历 结果:5 4 3 2 1 注:库中反向迭代器在设计时,为了最求极致对称,rbegin() 指向最后一个有效元素下一个位置,rend() 指向第一个有效元素...} 原因:大佬在设计时为了追求与正向迭代器绝对对称,故意指向位置与其保持一致,仅仅是 rend() 在 begin() 处,rbegin() 在 end() 处 经过这样设计后,rbegin(...) 和 rend() 函数实现就变得简单了,此时压力给到了 operator*() 实现 reverse_iterator rbegin() { reverse_iterator(end()); }...//开始 -> 尾 reverse_iterator rend() { reverse_iterator(begin()); } //结束 -> 头 1.4、其他功能 假设想通过迭代器直接访问自定义对象中成员时

    14820

    暑假(补)-3

    学完了vector,接下来就开始学习其他容器了。这些都是C++ STL中比较好用方法,让你编程变得简单。 迭代器iterator 在这几天使用来看,自认为迭代器是为了访问容器元素。...名称 常量反向迭代器: 容器类型::const_reverse_iterator 名称 下面就以一个实例来学习迭代器使用方法。...=ve.rend();++it)//听说 ++i 比 i++执行速度快 cout<<(*ve)<<endl; return 0; } 还有操作迭代器三个函数 包含于头文件< algorithm...集合set 头文件 其实,只要掌握了一个容器操作方法,其他容器方法都可以类比。...#include set st; st.insert() //插入元素 st.begin() // 返回第一个元素迭代器 st.end() //返回最后一个元素之后迭代器,不是最后一个迭代器

    33830

    C++】STL 容器 - set 集合容器 ② ( set 集合容器常用 api 简介 | 使用迭代器进行正向迭代与反向迭代 | 集合容器插入元素 | 插入单个元素 | 插入多个元素 )

    一、set 集合容器遍历 1、使用迭代器进行正向迭代与反向迭代 std::set 集合容器 提供了 begin、end、rbeginrend 这几个成员函数,用于 获取 迭代访问链表中元素 ...rend(); const_reverse_iterator rend() const; 迭代器位置如下图所示 : 正向迭代示例 : // 遍历 set 集合容器 , 正向迭代 for (set...二、set 集合容器插入元素 1、插入单个元素 - insert 函数 在 C++ 标准模板库 ( STL , Standared Template Library ) 中 , set 容器是一个有序集合...std; #include "set" #include "vector" int main() { // set 集合容器 // 初始化列表中顺序会自动排序 set se{9,...; 被插入元素 另外集合 , 可以不是 set 集合 , 可以是 vector , deque 容器 ; set#insert 插入多个元素 函数原型 : void insert (InputIt

    87710

    C++深度探索】mapset基础介绍与实用指南

    set容器是基于平衡二叉树(红黑树)实现,所以插入、删除、查找操作时间复杂度都是O( log_2 n )。   ...第一个元素反向迭代器,即end reverse_iterator rend() 返回set最后一个元素下一个位置反向迭代器,即rbegin const_reverse_iterator crbegin...3.map介绍与使用 map文档介绍   在C++中,map是一种关联容器,它将键和值存储在一个有序集合中。每个键唯一应一个值,而且键和值是成对存储。...map容器是也基于平衡二叉树(红黑树)实现,所以插入、删除、查找操作时间复杂度都是O( log_2 n ),并且在插入键值对时会根据键顺序进行排序。...:首元素位置,end最后一个元素下一个位置 cbegin()和cend() 与begin和end意义相同,但cbegin和cend所指向元素不能修改 rbegin()和rend() 反向迭代器,rbegin

    13110

    C++】基础:STL标准库常用模块使用

    map:映射,存储键值,按照键大小进行自动排序。 unordered_set:无序集合,存储唯一值,并提供常数时间查找操作。...unordered_map:无序映射,存储键值,并提供常数时间查找操作。 :satisfied:3. 常用算法模块 sort:容器进行排序。 find:在容器中查找指定元素。...STL提供了各种不同类型容器,包括动态数组(vector)、双向链表(list)、队列(queue)、栈(stack)、集合(set)、映射(map。...empty." << std::endl; } return 0; } map:映射,存储键值,按照键大小进行自动排序。...unordered_map:无序映射,存储键值,并提供常数时间查找操作。 3. 常用算法模块 sort:容器进行排序。

    12710

    C++ map和unordered_map详解

    概述   C++map和unordered_map提供是一种键值容器,在实际开发中会经常用到,它跟Python字典很类似,所有的数据都是成对出现,每一第一个值称之为关键字(key),每个关键字只能在...map使用方法   头文件:include   下面的代码中都包含了std:using namespace std; 创建map对象 // Method1 map map1...返回指向迭代器最后一个元素迭代器 rbegin 返回迭代器逆序第一个元素迭代器 rend 返回迭代器逆序最后一个元素迭代器 cbegin 返回常量迭代器第一个元素迭代器 cend 返回常量迭代器最第一个元素迭代器...crbegin 返回常量迭代器逆序第一个元素迭代器 crend 返回常量迭代器逆序最后一个元素迭代器 int main() { mapmap1; map1...it2 = map1.rbegin(); it2 !

    3K20
    领券