是向量的复杂性::清除未指定
Is the complexity of vector::clear unspecified?
根据Is`std::vector<基元>:clear()`a constant time operation?,注意到C++标准似乎没有指定CCD_ 1的运行时间。
它规定了有序(表102)和无序关联容器(表103)(均为线性)的list::clear
(线性;§23.3.5.4.5)和.clear
的运行时间。然而,vector::clear
似乎丢失了(尽管其他vector
成员,如.data
和.swap
,似乎具有特定的复杂性)。
是真的没有说明,还是我错过了什么?
是真的没有说明,还是我错过了什么?
是。目前,它确实没有具体说明。
有一个开放库问题,其文本包含相关问答的链接;StackOverflow上的A。乔纳森·韦克利对这个问题的回答澄清了发生了什么
根据链接建议,对于所有序列容器,clear()
的复杂性要求应为线性。但是,必须记住,复杂性要求只是的上限。根据C++11标准第17.5.14/7段:
库子句中指定的复杂性要求是上限,提供更好复杂性保证的实现满足这些要求。
这允许进行可能的优化,但不强制执行。
即使链接的提议将被接受,我们也不允许假设clear()
对于非类元素的序列容器具有O(1)复杂性,尽管这似乎是一种自然和常见的优化策略(dasblinkenlight对SO上的这个问题的回答证实了这一点)。
实施将被允许采用该策略(根据17.5.1.4/7),但不需要这样做,因为标准中没有规定(也没有建议)此类约束。
相关文章:
- 从 XML 中读取未指定结构的每个数据成员
- 用数据填充未指定大小的数组
- 访问从联合与另一个成员集复制的联合中的一个成员是否未定义或未指定?
- 双循环变量的相等条件:未指定还是未定义
- SQL Server-未找到数据源名称,也未指定默认驱动程序
- 无法创建长度未指定
- 在Visual Studio中更新Qt翻译(.ts文件)时出现未指定错误
- 是否未指定在未评估的上下文中实例化模板/lambda
- 未定义与未指定与实现定义的行为
- 在 c++ 中获取未指定数量的输入
- 摆动,传递未指定维度的阵列
- 在尝试提交作业警告时,我一直在警告:与未指定行为的字符串字面结果比较[-WADDRESS]
- 我的基本C 程序中有一个未指定的错误
- OPENCV错误:未指定的错误(未实现该函数)
- 函数参数中数组大小未指定
- 从源代码编译 openCV:*** 未指定目标,也未找到生成文件.停
- 超载构造函数中的未指定字段
- CPack NSIS 组件未指定
- 未指定文件
- 是向量的复杂性::清除未指定