C++ 什么';s C+中std::string::contains的时间复杂度+;23?
CPPPreference说C++ 什么';s C+中std::string::contains的时间复杂度+;23?,c++,c++23,C++,C++23,CPPPreference说std::string::contains即将发布, 但是没有运行时要求。是否保证在线性时间内运行?(比如,在实现中使用KMP算法)还是二次时间 我在当前的C++标准草案中找到了,但是找不到参考。,代码>包含< /C> >为: 相当于: return basic_string_view<charT, traits>(data(), size()).contains(x); 返回基本字符串视图(data(),size())。包含(x); 与: 相当于:
std::string::contains
即将发布,
但是没有运行时要求。是否保证在线性时间内运行?(比如,在实现中使用KMP算法)还是二次时间
我在当前的C++标准草案中找到了,但是找不到参考。
,<>代码>包含< /C> >为:
相当于:return basic_string_view<charT, traits>(data(), size()).contains(x);
返回基本字符串视图(data(),size())。包含(x);
与:
相当于:返回find(x)!=非营利组织代码>
由于使用basic\u string\u view::npos
对整数进行相等性测试是一个常数时间操作,因此时间复杂度:
此子类中的成员函数在最坏情况下具有O(size()*str.size())的复杂性,尽管实现应该做得更好
指示包含的相当于查找(x)!=非营利组织
最坏的情况下,复杂性可能是O(size()*str.size())。由于std::string::contains
和std::string\u view::contains
都是constexpr
方法,因此,如果两个字符串都已知,那么操作最多只能在编译时执行
注意,目前(GCC 11)只有std::string_view
在libstdc++中具有constepr
功能
平凡的constexpr示例:
commit将contains()添加到libstdc++for GCC 11: