关于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:本测试仅对于本题的数据条件。