Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ cpp中的映射字符串_C++_String_Maps - Fatal编程技术网

C++ cpp中的映射字符串

C++ cpp中的映射字符串,c++,string,maps,C++,String,Maps,我想将所有子字符串存储在无序的映射中。我想使用substr stl的函数,但最坏情况下的时间复杂度是O(n),当我在循环中使用字符串的所有索引时,它会给我O(n^2) 在O(n)中,我们可以使用指针或其他方法做得更好,以便稍后访问子字符串。如果不想将子字符串复制到映射中,则可以使用来存储子字符串的视图。这需要一个指针和一个长度,所以它尽可能地高效 您可以构建所有子字符串的向量,如 int main() { std::string word = "word"; auto size

我想将所有子字符串存储在无序的映射中。我想使用
substr
stl的函数,但最坏情况下的时间复杂度是O(n),当我在循环中使用字符串的所有索引时,它会给我O(n^2)


在O(n)中,我们可以使用指针或其他方法做得更好,以便稍后访问子字符串。

如果不想将子字符串复制到映射中,则可以使用来存储子字符串的视图。这需要一个指针和一个长度,所以它尽可能地高效

您可以构建所有子字符串的向量,如

int main()
{
    std::string word = "word";
    auto size = word.size();
    std::vector<std::string_view> parts;
    parts.reserve(size * (size + 1)/2); // reserve space for all the sub strings
    for(size_t i = 0; i < size; ++i)
        for(size_t j = i; j < size; ++j)
            parts.emplace_back(word.data() + i, j - i + 1);
}   
intmain()
{
std::string word=“word”;
自动大小=word.size();
向量部分;
parts.reserve(size*(size+1)/2);//为所有子字符串保留空间
对于(大小i=0;i
尝试字符串视图。可以非常有效地表示子字符串。但是,无论您尝试什么,在映射中存储所有子字符串都会很慢。在给定子字符串的情况下,将该映射用作计算机已有结果的缓存将大大改善您计划如何使用该映射,我想这是我们应该重点关注的地方