振り返り1: C++のハッシュ法 C++のunordered_set/unordered_mapでは現在のデータ構造のサイズを基にしたlinked-listを指すテーブルを持ちます。まず、入力値(key)のハッシュを得て、modを取りindexを定めます。各indexに対応するlinked-listの各要素はkeyを持ち、存在を管理・値を格納します。これがハッシュ法です。 入力がランダムの場合、indexはうまくばらけて各linked-listは浅い状態になります。テーブルのサイズを動的に変化させることで、平均計算量$O(1)$でのアクセスが可能です。しかし、毎回同じindexとなるような値(key)をN個入力すると特定のlinked-listの深さをNとすることが可能です。C++20であれば85229ul * iという値を$2e5$個入るようにすればanti-unordered_set/
![Pythonのハッシュ衝突攻撃の考察3: setの理解と効率的な衝突の実践(anti-setの実践) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/2c5986b6d5bd43015155aefeb7693aedc4782d67/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9UHl0aG9uJUUzJTgxJUFFJUUzJTgzJThGJUUzJTgzJTgzJUUzJTgyJUI3JUUzJTgzJUE1JUU4JUExJTlEJUU3JUFBJTgxJUU2JTk0JUJCJUU2JTkyJTgzJUUzJTgxJUFFJUU4JTgwJTgzJUU1JUFGJTlGMyUzQSUyMHNldCVFMyU4MSVBRSVFNyU5MCU4NiVFOCVBNyVBMyVFMyU4MSVBOCVFNSU4QSVCOSVFNyU4RSU4NyVFNyU5QSU4NCVFMyU4MSVBQSVFOCVBMSU5RCVFNyVBQSU4MSVFMyU4MSVBRSVFNSVBRSU5RiVFOCVCNyVCNSUyOGFudGktc2V0JUUzJTgxJUFFJUU1JUFFJTlGJUU4JUI3JUI1JTI5JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1lNDY3OGVkOGUzNjQ3ZDdkNzFmYzgxYzc1Y2E0ZmU2Nw%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwcmVjdXJha2kmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTBkMjM4YmVhZDMxYzIxMjYzYWY1NWVjNjE0NzM1YTg4%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dd8d74c5ac3fcd0da1657b3ba39df0f14)