首页 / 知识
关于stl:C ++,std :: set,std :: map等的开始/结束/ rbegin / rend是否在恒定时间内执行?
2023-04-16 14:41:00

C++ does begin/end/rbegin/rend execute in constant time for std::set, std::map, etc?对于std :: set和std :: map这样的数据类型,其中以对数时间进行查找,是否需要实现来维护begin和end迭代器? 访问开始和结束是否意味着可能会在对数时间内进行查找? 我一直以为开始和结束总是在固定的时间发生,但是我在Josuttis中找不到对此的任何确认。 既然我正在做一些需要对性能进行分析的工作,那么我想确保覆盖基础。 谢谢 他们发生在恒定的时间。我正在查看ISO / IEC 14882:2003标准的第466页: 表65-容器要求 a.begin(); (恒定的复杂度) a.end(); (恒定的复杂度) 表66-可逆容器要求 a.rbegin(); (恒定的复杂度) a.rend(); (恒定的复杂度) 是的,根据http://www.cplusplus.com/reference/stl/,begin(),end()等都是O(1)。 在C ++标准中,表23.1(容器要求)中的表65列出了begin()和end()需要恒定的时间。如果您的实现违反了此要求,则说明不符合要求。 只需查看代码,即可在GNU libstdc ++的std :: map中看到迭代器
您会看到所有end rend cend ...都是在恒定时间内实现的。 但是请谨慎使用hash_map。 begin()不是常数。 对于std :: set
开始:常数,结束:常数, 对于std :: map 他们也是不变的(所有人) 如有任何疑问,请访问www.cplusplus.com |
最新内容
相关内容
linux执行多次命令?
linux执行多次命令?,系统,信息,标准,工作,情况,命令,周期性,服务,代码,时间,linux系统能把很多命令一起执行,然后结果输出一个文件吗?就是scrilinux命令没执行完?
linux命令没执行完?,系统,设备,工具,情况,密码,状态,电脑,管理,材料,服务,Linux:写的脚本执行过程中为什么会有cp未复制完,或者tar未解压完的shell中执行linux命令?
shell中执行linux命令?,系统,名称,环境,管理,工作,代码,技术,软件,经理,基础,it运维需要学什么?1、单纯学编程语言本身,对于一些英文符号,需要记linux打印命令执行?
linux打印命令执行?,信息,系统,工具,服务,命令,发行,基础,位置,设备,时间,怎么使用CMD里面的print命令?1、print 打印命令用法:PRINT [/D:devicelinux执行两次命令?
linux执行两次命令?,系统,信息,连续,名称,命令,初级,首页,工具,管理,终端,linux怎么执行命令linux如何进入命令行?我们一起来了解一下吧。打开llinux命令执行安装?
linux命令执行安装?,软件,系统,管理,网站,官网,市场,中心,最新,灵活,工作,如何定制安装linux软件?linux安装软件的三种方式如下:源代码编译安装linux执行一条新命令?
linux执行一条新命令?,系统,工作,命令,管理,网络,服务,信息,目录,路径,脚本,Linux下必须知道的11个网络命令netstat -r:打印路由表。路由表保存监控linux执行命令?
监控linux执行命令?,系统,情况,数据,实时,网络,信息,状态,时间,设备,命令,如何监视Linux系统资源的使用情况使用top或htop命令 top或htop都可linux命令卡死不执行?
linux命令卡死不执行?,系统,设备,数据,密码,工具,情况,软件,环境,分析,命令,linux命令出现卡机,很多命令输入后不反应1、可能是你shell的环境linux执行c程序命令?
linux执行c程序命令?,系统,工作,工具,信息,代码,命令,文件,保险,管理,环境,linux系统常用操作命令linux常用命令有pwd命令、cd命令、ls命令、clinux命令执行中断?
linux命令执行中断?,设备,系统,网络,工具,工作,通用,状态,名字,流程,进程,linux解压文件终端断了,还会继续执行吗1、在Linux远程运行JAR包时,是执行linux脚本命令行?
执行linux脚本命令行?,工具,位置,地方,环境,数据,状态,暂停,增长,系统,基础,运行linux脚本,遇到要按回车键,怎么让它自动应答,继续运行脚本?1