关于stl:C ++,std :: set,std :: map等的开始/结束/ rbegin / rend是否在恒定时间内执行?

关于stl:C ++,std :: set,std :: map等的开始/结束/ rbegin / rend是否在恒定时间内执行?

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中看到迭代器

std::map

您会看到所有end rend cend ...都是在恒定时间内实现的。


但是请谨慎使用hash_map。 begin()不是常数。


对于std :: set

开始:常数,结束:常数,
rbegin:常量,
撕裂:恒定,

对于std :: map

他们也是不变的(所有人)

如有任何疑问,请访问www.cplusplus.com


推荐阅读

    linux执行多次命令?

    linux执行多次命令?,系统,信息,标准,工作,情况,命令,周期性,服务,代码,时间,l

    linux命令没执行完?

    linux命令没执行完?,系统,设备,工具,情况,密码,状态,电脑,管理,材料,服务,Lin

    shell中执行linux命令?

    shell中执行linux命令?,系统,名称,环境,管理,工作,代码,技术,软件,经理,基础

    linux打印命令执行?

    linux打印命令执行?,信息,系统,工具,服务,命令,发行,基础,位置,设备,时间,怎

    linux执行两次命令?

    linux执行两次命令?,系统,信息,连续,名称,命令,初级,首页,工具,管理,终端,lin

    linux命令执行安装?

    linux命令执行安装?,软件,系统,管理,网站,官网,市场,中心,最新,灵活,工作,如

    linux执行一条新命令?

    linux执行一条新命令?,系统,工作,命令,管理,网络,服务,信息,目录,路径,脚本,L

    监控linux执行命令?

    监控linux执行命令?,系统,情况,数据,实时,网络,信息,状态,时间,设备,命令,如

    linux命令卡死不执行?

    linux命令卡死不执行?,系统,设备,数据,密码,工具,情况,软件,环境,分析,命令,l

    linux执行c程序命令?

    linux执行c程序命令?,系统,工作,工具,信息,代码,命令,文件,保险,管理,环境,li

    linux命令执行中断?

    linux命令执行中断?,设备,系统,网络,工具,工作,通用,状态,名字,流程,进程,lin

    执行linux脚本命令行?

    执行linux脚本命令行?,工具,位置,地方,环境,数据,状态,暂停,增长,系统,基础,

    linux远端执行命令?

    linux远端执行命令?,系统,状态,软件,名称,密码,暂停,网络,环境,认证,在线,如

    linux命令行执行成功?

    linux命令行执行成功?,系统,信息,状态,服务,管理,百度,设计,灵活,代码,命令,L

    安卓执行linux命令行?

    安卓执行linux命令行?,系统,设备,基础,发展,标准,情况,信息,电话,号码,工具,

    c执行在linux命令?

    c执行在linux命令?,系统,环境,保险,工具,代码,命令,程序,文件,终端,语言,如何

    linux执行中退出命令?

    linux执行中退出命令?,档案,状态,命令,分析,数据,电脑,实时,系统,工具,编辑,l

    linux授权命令执行?

    linux授权命令执行?,系统,工作,数字,权限,文件,概念,标准,命令,目录,用户,在L

    linux定时执行命令?

    linux定时执行命令?,时间,系统,服务,任务,工作,标准,情况,周期性,工具,命令,l

    linux结束进程命令?

    linux结束进程命令?,系统,软件,管理,进程,名称,数据,单位,状态,数字,代码,Lin