C++ 优化代码:使用 map 容器提升查找效率
"使用map容器进行优化可以避免遍历查找的时间复杂度O(n),可以降低到O(logn)。\n\n首先需要修改addr_map_t结构体,使其能够比较大小和作为map的key:\ncpp\nstruct addr_map_t\n{\n uint32_t old_func;\n uint32_t new_func;\n uint32_t count;\n vector<uint32_t> old_pos_v;\n vector<uint32_t> new_pos_v;\n\n bool operator<(const addr_map_t& other) const\n {\n return old_func < other.old_func || (old_func == other.old_func && new_func < other.new_func);\n }\n};\n\n\n然后使用map容器来存储addr_map_t对象,将old_func和new_func作为key:\ncpp\nstd::map<addr_map_t, int> m_map_normal_func_addr;\n\n\n修改save_normal_func函数:\ncpp\nint save_normal_func(uint32_t func0, uint32_t func1, uint32_t pos0, uint32_t pos1)\n{\n addr_map_t st;\n st.old_func = func0;\n st.new_func = func1;\n\n auto it = m_map_normal_func_addr.find(st);\n if (it != m_map_normal_func_addr.end())\n {\n it->second++;\n it->first.old_pos_v.push_back(pos0);\n it->first.new_pos_v.push_back(pos1);\n return 0;\n }\n\n st.count = 1;\n st.old_pos_v.push_back(pos0);\n st.new_pos_v.push_back(pos1);\n m_map_normal_func_addr[st] = 1;\n\n return 1;\n}\n\n\n这样就可以使用map容器来优化查找和插入操作了。\n\n
原文地址: https://www.cveoy.top/t/topic/qxOj 著作权归作者所有。请勿转载和采集!