关于set/map 等容器对string类的 性能指标
测试题目:
https://codeforces.com/contest/1287/problem/B
测试的字符串条件其中:
字符串长度为<=30,
字符串个数为<=1500,
且每一个加入和查询的字符串长度相等。
使用set/map 等容器 来检测某一个等长度的字符串是否存在。
使用关闭同步后的cin/cout 进行IO
测试结果如上图。
结论:
在以上string条件下:
时间指标: | set明显优于map | unordered_set/unordered_map分别优于set/map |
---|---|---|
空间指标: | set明显优于map | unordered_set/unordered_map分别优于set/map |
### 总结: | 对于string类,set在时空上均优于map | 因为字符串的个数为<=1500 ,所以内部采用hash算法的unordered_set/unordered_map分别优于set/map |
可以通过下面文字链接查看对应代码。
68947873 | Jan/17/2020 00:51UTC+8 | QieziMin | B - Hyperset | GNU C++14 | Accepted | 576 ms | 400 KB |
---|---|---|---|---|---|---|---|
68947783 | Jan/17/2020 00:50UTC+8 | QieziMin | B - Hyperset | GNU C++14 | Accepted | 1107 ms | 106100 KB |
68947742 | Jan/17/2020 00:49UTC+8 | QieziMin | B - Hyperset | GNU C++14 | Accepted | 2184 ms | 106200 KB |
68947641 | Jan/17/2020 00:47UTC+8 | QieziMin | B - Hyperset | GNU C++14 | Accepted | 624 ms | 400 KB |
ps:本测试仅对于本题的数据条件。