STL中的字符串库内置的查找操作的时间复杂度是什么?
答案 0 :(得分:3)
标准§21.4.7.2对复杂性没有任何保证。
你可以合理地假设std::basic_string::find
在被搜索的字符串的长度中占用线性时间,但是,即使是天真的算法(检查每个子字符串是否相等)具有这种复杂性,并且{{}}不太可能1}}构造函数将构建一个花哨的索引结构,以启用比这更快的任何东西。
根据实施情况,搜索模式的复杂性可能在线性和常数之间合理地变化。
答案 1 :(得分:0)
正如评论中所指出的,标准没有具体说明。
但是,由于std::string
是一个通用容器,并且它无法对其所包含的字符串的性质做出任何假设,因此您可以合理地假设在搜索时复杂性为O(n)
对于单个char
。
答案 2 :(得分:-3)
最多,执行与[first,last]范围内的元素数量一样多的比较。