C++ 什么';s C+中std::string::contains的时间复杂度+;23?

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); 与: 相当于:

CPPPreference说
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: