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

一个公司可以做两个网站不建公司网站要多久

一个公司可以做两个网站不,建公司网站要多久,潍坊网站制作维护,网站建设报告 商业价值C STL 入门:map 键值对容器 一、核心特性与适用场景 map 是 C STL 提供的关联式键值容器,基于红黑树实现,具备以下核心特征: 特性表现形式底层原理键唯一性不允许重复键值红黑树节点键值唯一约束自动排序元素按键升序排列红黑树…

C++ STL 入门:map 键值对容器


一、核心特性与适用场景

map 是 C++ STL 提供的关联式键值容器,基于红黑树实现,具备以下核心特征:

特性表现形式底层原理
键唯一性不允许重复键值红黑树节点键值唯一约束
自动排序元素按键升序排列红黑树中序遍历特性
对数复杂度插入/查找/删除均为 O(log n)树高平衡特性保障

典型应用场景

  • 字典统计(如词频统计)
  • 有序数据映射(如时间序列数据)
  • 配置管理(键值对存储)
  • 关联容器组合(与vector/set配合)

二、基础操作与代码演示
1. 容器初始化
#include <iostream>
#include <map>
using namespace std;int main() {// 默认构造:空映射map<string, int> m; // 初始化列表构造(C++11)map<string, int> m2 = {{"hello", 4}, {"world", 3}, {"ilovewuhan", 5}};
2. 元素操作全流程
    // 插入操作m["hello"] = 4;     // 插入键值对m["world"] = 3; m["ilovewuhan"] = 5;m["ha"] = 1;        // 支持中文键值(字符串编码需统一)// 下标访问(注意副作用)cout << "hello : " << m["hello"] << endl; // 输出4// 安全访问示范if(m.find("cpp") != m.end()) {cout << m.at("cpp"); // 不存在时抛出out_of_range}// 迭代器遍历for(auto it = m.begin(); it != m.end(); ++it){cout << it->first << ":" << it->second << " ";} // 输出按键排序:ha hello ilovewuhan world// 获取容器大小cout << "\nmap的长度为: " << m.size() << endl; // 输出4

三、操作时间复杂度分析
操作类型时间复杂度特性说明
insert()O(log n)需要平衡树结构调整
erase()O(log n)同样涉及树重构
find()O(log n)二分查找特性
operator[]O(log n)不存在时自动插入默认值
at()O(log n)带异常检查的安全访问
遍历O(n)中序遍历完整红黑树

四、进阶用法与技巧
1. 自定义排序规则
// 创建降序map(按字符串长度排序)
struct cmp {bool operator()(const string& a, const string& b) const {return a.size() < b.size(); // 按键长排序}
};
map<string, int, cmp> m3;m3["a"] = 1; 
m3["longer"] = 2; 
m3["mid"] = 3;// 遍历顺序:a → mid → longer
2. 批量操作优化
// 范围删除
auto start = m.lower_bound("h"); // >=h的第一个键
auto end = m.upper_bound("w");   // >w的第一个键
m.erase(start, end); // 删除所有h ≤ key < w的键值对// 合并操作(C++17)
map<string, int> src{{"x",10}, {"y",20}};
m.merge(src); // 将src中的元素移动到m中
3. 节点控制(C++17)
// 提取节点修改键
auto nh = m.extract("ilovewuhan"); 
nh.key() = "newkey"; // 修改键值(必须保持排序不变!)
m.insert(move(nh));  // 重新插入// 节点拼接(零拷贝转移)
map<string, int> m4;
m4.insert(m.extract(m.begin())); // 将首个节点转移到m4

五、易错点与解决方案
错误类型典型表现解决方案
意外插入m["nonexist"]返回0优先使用find()检查
排序规则错误自定义比较器未满足严格弱序遵循运算符重载规范
迭代器失效遍历时删除元素使用erase()返回新迭代器
多线程竞争并发读写未加锁使用std::mutex保护

安全访问示例

int get_value(const map<string, int>& m, const string& key) {auto it = m.find(key);if(it != m.end()) return it->second;throw invalid_argument("Key not found");
}

六、性能优化技巧
  1. 空间预留优化(C++11)
m.max_size(); // 查询最大容量
m.rehash(100); // 预留足够哈希桶(unordered_map用法)
  1. 插入效率优化
// 使用emplace原地构造
m.emplace("newkey", 42); // 避免临时对象生成// 批量插入优化
vector<pair<string, int>> vec = { /*...*/ };
m.insert(vec.begin(), vec.end()); // 批量插入O(n log n)
  1. 内存收缩技巧
// 清空并释放内存
map<string, int>(m).swap(m); // 合并后收缩
m.merge(m2);
map<string, int>(m).swap(m); 

七、知识延伸与对比
容器类型键唯一性查找效率排序特性典型应用场景
mapO(log n)自动升序有序键值对存储
unordered_mapO(1)平均无序快速查找
multimapO(log n)允许重复键一对多关系映射
setN/AO(log n)仅存储键数据去重

配套练习项目
LeetCode Map相关题目
CppReference map文档


文章转载自:

http://46f4GLna.hjbrd.cn
http://swNq91Xi.hjbrd.cn
http://fwMVAIfH.hjbrd.cn
http://Zrs7fnDD.hjbrd.cn
http://YGk08coj.hjbrd.cn
http://43aIYJc1.hjbrd.cn
http://vKo5OKZ6.hjbrd.cn
http://ZrPBXcoP.hjbrd.cn
http://3z2coldu.hjbrd.cn
http://tgoCGLoT.hjbrd.cn
http://Sue6h7lx.hjbrd.cn
http://myFJ5x0r.hjbrd.cn
http://Nk6siIvv.hjbrd.cn
http://lq2NeGif.hjbrd.cn
http://xoqwcECe.hjbrd.cn
http://n0ooEdYG.hjbrd.cn
http://Yhx9FIng.hjbrd.cn
http://tXUKryMU.hjbrd.cn
http://jqqcbETe.hjbrd.cn
http://5JC9cj1k.hjbrd.cn
http://Q4lKxEMo.hjbrd.cn
http://ULFGNIx9.hjbrd.cn
http://0nZYmEv1.hjbrd.cn
http://bpLNhJJI.hjbrd.cn
http://tZtJHnaP.hjbrd.cn
http://SShqm2Bq.hjbrd.cn
http://Fq2Lhnrx.hjbrd.cn
http://MwZopmn1.hjbrd.cn
http://UaugSMBp.hjbrd.cn
http://UVy6oPDd.hjbrd.cn
http://www.dtcms.com/wzjs/659941.html

相关文章:

  • 漫画网站源码寿光网站优化
  • 广州做网站系统wordpress开发销售系统
  • 做网站,图片显示不出来杭州注册公司有什么优惠政策
  • 如何选择邯郸网站制作凡科网站制作教程
  • 广州 环保 凡人网站建设p2p网站建设规划
  • 专业网站建设加盟合作南京网站制作哪家专业
  • 帝国cms企业网站关键词出价计算公式
  • 南通优普网站建设团队黄山自驾游旅游攻略
  • 建设网站都要学些什么问题在哪个彩票网站是小黄人做头像的
  • 广东网站建设微信商城运营网络营销推广方案
  • 是做网站编辑还是做平面设计黄页群发软件
  • 新手网站设计定价房房网
  • 网站被拔毛的原因wordpress产品上传
  • 东莞樟木头哪里有做网站的网站存在的问题及改进措施
  • 广州市国外网站建设平台安全员怎么网站中做备案
  • 网站建设网站软件有哪些惠州seo排名收费
  • 北京网站设计制作哪家好外链吧怎么使用
  • 怎么优化一个网站wordpress和dz
  • 网站建设的关注点网站改版建设公司
  • 重庆域名注册官网网站seo的方法
  • 优化网站的软件高校后勤网站建设
  • 做餐饮企业网站的费用付费网站推广
  • 维护一个网站要多少钱银川微信网站制作
  • 家庭宽带做网站稳定西安制作网站的公司有
  • 淘客的手机网站微信支付开发文档
  • 北京网站托管维护什么招聘网最好找工作
  • 如何开发电商网站域名备案与网站备案的区别
  • 中小企业网站制作平台google免费vps
  • 怎么样推广网站在家怎么提升学历
  • 衡阳市网站建设公司永州网站制作