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

北京网站建设 专业10年营销策划公司介绍

北京网站建设 专业10年,营销策划公司介绍,网站板块策划,自己买主机可以做网站吗Cmap容器详解 求关注 一、Map容器概述 map是C标准模板库(STL)中的关联式容器,以键值对(Key-Value)形式存储数据,底层通过红黑树(一种自平衡二叉搜索树)实现。其核心特性包括&#…

C++map容器详解

求关注

一、Map容器概述
map是C++标准模板库(STL)中的关联式容器,以键值对(Key-Value)形式存储数据,底层通过红黑树(一种自平衡二叉搜索树)实现。其核心特性包括:

  1. 自动排序:元素按Key的升序排列,无需手动排序。

  2. 唯一键值:每个Key在容器中唯一,若重复插入则覆盖或忽略(取决于插入方式)。

  3. 高效操作:插入、删除、查找的时间复杂度为O(log n),适合频繁查找的场景。

示例:定义map

C++

#include <map>
#include <string>
using namespace std;map<int, string> studentMap;  // Key为int类型,Value为string类型

二、Map核心操作

1. 插入数据

三种常用插入方式

  • insert()函数:安全插入,若Key已存在则不会覆盖。

    C++

    studentMap.insert(pair<int, string>(101, "Alice"));
    studentMap.insert(map<int, string>::value_type(102, "Bob"));
    studentMap.insert(make_pair(103, "Charlie"));  // 推荐简洁写法
  • 数组[]操作符:若Key存在则覆盖Value。

    C++

    studentMap[104] = "David";  // 若104不存在则插入,存在则更新
  • 返回值判断:通过pair<iterator, bool>检查插入是否成功37。

    C++

    复制

    auto result = studentMap.insert(make_pair(101, "Eve"));
    if (!result.second) cout << "Key 101已存在!";

2. 查找与访问

  • find()函数:返回迭代器,未找到时指向end()14。

    C++

    auto it = studentMap.find(102);
    if (it != studentMap.end()) cout << "找到:" << it->second;  // 输出Bob
  • count()函数:返回Key是否存在(0或1)。

  • lower_bound()upper_bound():用于范围查找。

3. 删除数据

  • 按Key删除erase(key)

  • 按迭代器删除erase(iterator)

  • 范围删除erase(start_iterator, end_iterator)

    C++

    studentMap.erase(103);  // 删除Key为103的元素
    auto it = studentMap.find(104);
    if (it != studentMap.end()) studentMap.erase(it);

4. 遍历元素

  • 迭代器遍历

    C++

    for (auto it = studentMap.begin(); it != studentMap.end(); ++it) cout << it->first << ": " << it->second << endl;
  • C++11范围循环

    C++

    for (auto& entry : studentMap) cout << entry.first << ": " << entry.second << endl;

三、高级技巧与注意事项

1. 自定义排序规则

默认按Key升序排列,若需自定义排序,可提供比较函数:

C++

复制

struct CompareDesc {bool operator()(const int& a, const int& b) const {return a > b;  // 降序排列}
};
map<int, string, CompareDesc> customMap;

2. 性能优化

  • 避免频繁插入删除:红黑树结构调整有开销。

  • 预分配空间:若已知元素数量,可提前预留内存。

3. 常见问题

  • 迭代器失效:删除元素时需注意,正确写法为erase(it++)

  • 键不可修改:Key为常量,需先删除旧键再插入新键。


四、应用实例

案例:统计单词频率

C++

复制

map<string, int> wordCount;
string word;
while (cin >> word) wordCount[word]++;  // 自动初始化并统计for (auto& entry : wordCount) cout << entry.first << ": " << entry.second << "次" << endl;

五、总结

map容器凭借其高效的查找能力和自动排序特性,广泛应用于数据映射、缓存管理、配置存储等场景。掌握其核心操作与底层原理,能显著提升代码效率。对于需要更高插入/删除性能的场景,可考虑unordered_map(哈希表实现)。

http://www.dtcms.com/wzjs/334279.html

相关文章:

  • phcms wordpress百度seo推广是什么
  • 怎么在wordpress上设计网站电脑培训网上课程
  • 安徽元鼎建设公司网站站内推广方案
  • 大型b2c网站开发百度招商加盟推广
  • 广州seo网站推广优化网络软文发布
  • 网络设计接单windows优化大师官方网站
  • 哪里有营销型网站制作培训课程
  • 网站建设中企自己怎么优化关键词
  • 网页开发界面设计成都百度网站排名优化
  • 用织梦做的网站是模板的吗在线视频观看免费视频22
  • 制作网站分析商业模式长春seo排名外包
  • 台州网站建设设计网络舆情管理
  • 用vs做网站 怎么安装谷歌广告代运营
  • 网站开发交流吧网页制作费用大概多少
  • 佛山专业网站建设报价我赢网seo优化网站
  • 星链seo管理长沙网站托管seo优化公司
  • 网站建设好后能直接打开吗武汉seo网站优化排名
  • 西安网站建设盈科百度企业
  • 网站百度seo推广怎么做十大外贸平台
  • 设计参考图网站市场营销策划案的范文
  • 怎么做视频网站百度官方平台
  • 网站推广服务合同模板怎样优化网站排名
  • 打鱼跟电子游戏网站怎么做谷歌seo营销
  • 做餐饮如何加入外卖网站seo怎么优化软件
  • 网站seo教程网页制作模板
  • 宜昌平台网站建设英语培训机构前十名
  • 做国外网站建设推广产品引流的最佳方法
  • 做网站哪家seo优化技巧有哪些
  • 最牛黑客做的白粉交易网站爱站网关键词查询网站
  • 高端的网站建设网络营销比较常用的营销模式