std::map::find vs std::map::at
unknown
c_cpp
a year ago
1.6 kB
6
Indexable
#include <vector> #include <iostream> #include <chrono> #include <map> void find(const std::map<int, int>& map) { const auto& it = map.find(0); } void at(const std::map<int, int>& map) { try { map.at(0); } catch (std::out_of_range) {} } void runTestCase(const std::map<int, int>& map) { const uint32_t retries = 1000000; // Test case 1: std::map::find { auto start = std::chrono::high_resolution_clock::now(); for (int i = 0; i < retries; i++) { find(map); } auto seconds = std::chrono::duration<double>(std::chrono::high_resolution_clock::now() - start).count(); std::cout << "std::map::find with [" << retries << "] attempts: " << seconds << " seconds" << std::endl; } // Test case 2: std::map::at { auto start = std::chrono::high_resolution_clock::now(); for (int i = 0; i < retries; i++) { at(map); } auto seconds = std::chrono::duration<double>(std::chrono::high_resolution_clock::now() - start).count(); std::cout << "std::map::at with [" << retries << "] attempts: " << seconds << " seconds" << std::endl; } } int main(int argc, char* argv[]) { std::map<int, int> map; // Run test for empty map std::cout << "Test case for empty map" << std::endl; runTestCase(map); std::cout << std::endl; map[0] = 1; map[1] = 12; map[7] = 42; // Run test for map with data std::cout << "Test case for map with data" << std::endl; runTestCase(map); std::cout << std::endl; std::cout << "Test is finished" << std::endl; return 0; }
Editor is loading...
Leave a Comment