当前位置: 首页 > news >正文

镇江网站搜索优化电子商务网站建设费用

镇江网站搜索优化,电子商务网站建设费用,成都爱品阅网络科技有限公司,建材商城网站建设探索 C 中的映射与查找表 在 C 编程中#xff0c;映射#xff08;Map#xff09;和查找表#xff08;Lookup Table#xff09;是非常重要的数据结构#xff0c;它们能够高效地存储和检索数据#xff0c;帮助我们解决各种实际问题。今天#xff0c;我们就来深入探讨一下…探索 C 中的映射与查找表 在 C 编程中映射Map和查找表Lookup Table是非常重要的数据结构它们能够高效地存储和检索数据帮助我们解决各种实际问题。今天我们就来深入探讨一下如何在 C 中实现这些数据结构包括使用矢量Vector实现映射以及使用哈希Hash实现 hashMap 类。 一、使用矢量实现映射 矢量std::vector是 C 标准库中的一个强大的容器我们可以借助它来实现简单的映射功能。 #include iostream #include vector #include utility #include stdexcepttemplate typename Key, typename Value class VectorMap { private:std::vectorstd::pairKey, Value data;// 查找键的位置int find(const Key key) const {for (size_t i 0; i data.size(); i) {if (data[i].first key) {return i;}}return -1;}public:VectorMap() {}// 插入键值对void insert(const Key key, const Value value) {int index find(key);if (index -1) {data.push_back(std::make_pair(key, value));} else {data[index].second value;}}// 获取值Value operator[](const Key key) {int index find(key);if (index -1) {data.push_back(std::make_pair(key, Value()));return data.back().second;}return data[index].second;}// 删除键值对void erase(const Key key) {int index find(key);if (index! -1) {data.erase(data.begin() index);}}// 判断键是否存在bool contains(const Key key) const {return find(key)! -1;}// 获取映射大小size_t size() const {return data.size();}// 清空映射void clear() {data.clear();}// 检查映射是否为空bool empty() const {return data.empty();}- [ ] List item };在这个 VectorMap 类中我们使用一个 std::vector 来存储键值对std::pair。find 函数用于查找给定键在向量中的位置如果未找到则返回 -1。insert 函数根据键是否已存在来决定是插入新的键值对还是更新已有键的值。operator[] 函数提供了方便的访问方式类似于 std::map 的操作如果键不存在则会插入一个默认值并返回其引用。erase 函数用于删除指定键的键值对contains 函数用于判断键是否存在于映射中其他函数则用于获取映射的大小、清空映射以及检查映射是否为空。 二、查找表 查找表是一种用于快速查找数据的数据结构我们可以使用 std::vector 来简单实现一个查找表。 #include iostream #include vectortemplate typename T class LookupTable { private:std::vectorT data;public:LookupTable() {}// 插入元素void insert(const T value) {data.push_back(value);}// 查找元素bool contains(const T value) const {for (const T element : data) {if (element value) {return true;}}return false;}// 获取查找表大小size_t size() const {return data.size();}// 清空查找表void clear() {data.clear();}// 检查查找表是否为空bool empty() const {return data.empty();} };这个 LookupTable 类非常简单它提供了插入元素、查找元素以及获取查找表大小、清空查找表和检查查找表是否为空的功能。插入元素就是将元素添加到 std::vector 中查找元素则是遍历向量来判断是否存在给定元素。 三、哈希实现 hashMap 类 哈希表是一种高效的查找数据结构通过哈希函数将键映射到桶Bucket中每个桶可以存储多个键值对。下面是使用哈希实现 hashMap 类的代码 #include iostream #include vector #include list #include utility #include functionaltemplate typename Key, typename Value class HashMap { private:std::vectorstd::liststd::pairKey, Value buckets;size_t size_;// 哈希函数size_t hash(const Key key) const {std::hashKey hasher;return hasher(key) % buckets.size();}public:HashMap(size_t bucket_count 10) : size_(0) {buckets.resize(bucket_count);}// 插入键值对void insert(const Key key, const Value value) {size_t index hash(key);for (auto pair : buckets[index]) {if (pair.first key) {pair.second value;return;}}buckets[index].push_back(std::make_pair(key, value));size_;}// 获取值Value operator[](const Key key) {size_t index hash(key);for (auto pair : buckets[index]) {if (pair.first key) {return pair.second;}}buckets[index].push_back(std::make_pair(key, Value()));size_;return buckets[index].back().second;}// 删除键值对void erase(const Key key) {size_t index hash(key);auto bucket buckets[index];for (auto it bucket.begin(); it! bucket.end(); it) {if (it-first key) {bucket.erase(it);size_--;return;}}}// 判断键是否存在bool contains(const Key key) const {size_t index hash(key);for (const auto pair : buckets[index]) {if (pair.first key) {return true;}}return false;}// 获取映射大小size_t size() const {return size_;}// 清空映射void clear() {buckets.clear();size_ 0;}// 检查映射是否为空bool empty() const {return size_ 0;} };***在 HashMap 类中我们使用一个 std::vector 来存储桶每个桶是一个 std::list用于解决哈希冲突。hash 函数使用 std::hash 函数将键映射到桶的索引。insert 函数首先根据哈希值找到对应的桶然后查找键是否已存在 如果存在则更新值否则将新的键值对插入到桶中。operator[] 函数类似地先查找键如果不存在则插入默认值并返回其引用。erase 函数用于删除指定键的键值对contains 函数用于判断键是否存在于哈希表中其他函数用于获取哈希表的大小、清空哈希表以及检查哈希表是否为空。* *通过以上三种实现方式我们可以根据不同的场景选择合适的数据结构来满足需求。矢量实现的映射简单直观适用于数据量较小且对性能要求不高的情况查找表则侧重于快速判断元素是否存在 而哈希实现的 hashMap 类在处理大量数据时具有较高的查找效率但需要注意哈希冲突的处理和哈希函数的选择。在实际编程中我们可以根据数据的特点和操作的频繁程度来灵活运用这些数据结构以提升程序的性能和效率。*** 希望这篇文章能够帮助大家更好地理解 C 中的映射和查找表的实现方式如果你有任何问题或建议欢迎在评论区留言。
http://www.hkea.cn/news/14378728/

相关文章:

  • 网站项目建设主要内容湖南常德职业技术学校
  • 郑州做系统集成的公司网站html5个人网站源码
  • 做手机网站一般要多少钱中山市网站建设哪家好
  • dede 网站标题wordpress v4.1
  • 徐州网站建设招聘网网络建设图片
  • 网站群建设免费商城小程序源码
  • 专业网站制作公司排名衡水网站建费用
  • 怎么去跟客户谈网站建设wordpress切换 音乐
  • 南宁大型网站建设深圳设计公司最新招聘
  • seo网站是什么找人代做网站费用
  • 网站建设宣传ppt模板微网站建设定制网站建设
  • 保定网站制作网页北京网站优化体验
  • 连云港企业网站建设公司国内网站制作特点
  • 推广计划方案模板海东地区谷歌seo网络优化
  • 大连网站快速排名提升一台云服务器做多个网站
  • 英语翻译网站开发建设网站合同
  • 做网站文案用哪个软件社交网络的推广方法有哪些?
  • 广州网站开发公司专业企业网站制作怎么做
  • 莱芜租房网站南雄市建设局网站
  • 17网站一起做网店普宁池尾三门峡高端网站开发
  • 微网站开发企业选择网站程序开发外包
  • 网页设计基础考试题库含答案百度seo优化方法
  • 舒城县建设局网站东莞免费网站建站模板
  • php做公司网站h5在线编辑器
  • 二级网站建设与管理会议常州网络科技有限公司
  • 保定网站排名郑州做网站公司有多少
  • 山东专业的制作网站企业网站开发用什么语言写
  • 郑州网站推广策划建立公司网站需要注意什么
  • 企业做网站可以带中国吗莱芜金点子租房信息港
  • 个人能建电商网站吗网站建设方面