查找操作的时间复杂度

时间:2012-12-10 11:18:28

标签: c++ stl

  

可能重复:
  C++ string::find complexity

STL中的字符串库内置的查找操作的时间复杂度是什么?

3 个答案:

答案 0 :(得分:3)

标准§21.4.7.2对复杂性没有任何保证。

你可以合理地假设std::basic_string::find在被搜索的字符串的长度中占用线性时间,但是,即使是天真的算法(检查每个子字符串是否相等)具有这种复杂性,并且{{}}不太可能1}}构造函数将构建一个花哨的索引结构,以启用比这更快的任何东西。

根据实施情况,搜索模式的复杂性可能在线性和常数之间合理地变化。

答案 1 :(得分:0)

正如评论中所指出的,标准没有具体说明。

但是,由于std::string是一个通用容器,并且它无法对其所包含的字符串的性质做出任何假设,因此您可以合理地假设在搜索时复杂性为O(n)对于单个char

答案 2 :(得分:-3)

最多,执行与[first,last]范围内的元素数量一样多的比较。

http://cplusplus.com/reference/algorithm/find/