众所周知 trie 里封装了一个函数 prefix_range,其作用是生成以一字符串为前缀的字符串的所有字符串。返回值是一个 pair,从 first 遍历到 second 就可以得到所有字符串。
string s; cin>>s;
auto p=t.prefix_range(s);
for(auto it=p.first;it!=p.second;it++)
cout<<*it<<endl;
这样就可以得到所有字符串。
但是,如果我要统计字符串的个数,用刚才的方法遍历然后变量 ++ 绝对超时。求问有没有一种办法(用 pbds),能在 O(1) 的时间内统计个数?