河南省网站网站建设与什么专业有关

张小明 2025/12/28 0:51:56
河南省网站,网站建设与什么专业有关,学习做网站的,谷歌外链工具【数据结构手册008】STL容器完全参考指南 0 容器概览#xff1a;统一接口#xff0c;各异特性 C STL容器虽然功能各异#xff0c;但遵循统一的设计哲学。理解这种家族相似性能让我们更快掌握新容器。 // 所有容器的共同基础 templatetypename T class C…【数据结构手册008】STL容器完全参考指南0 容器概览统一接口各异特性C STL容器虽然功能各异但遵循统一的设计哲学。理解这种家族相似性能让我们更快掌握新容器。// 所有容器的共同基础templatetypenameTclassContainerConcept{public:// 类型定义usingvalue_typeT;usingsize_typesize_t;usingiterator...;usingconst_iterator...;// 基础操作boolempty()const;size_typesize()const;voidclear();// 迭代器iteratorbegin();iteratorend();const_iteratorcbegin()const;const_iteratorcend()const;};1 序列容器线性存储std::vector - 动态数组本质连续内存的动态数组#includevectorstd::vectorintvec{1,2,3};// 核心操作 vec.push_back(4);// 尾部添加: {1,2,3,4}vec.pop_back();// 尾部删除: {1,2,3}vec.insert(vec.begin()1,9);// 指定位置插入: {1,9,2,3}vec.erase(vec.begin()1);// 指定位置删除: {1,2,3}// 元素访问 intavec[1];// 无边界检查: 2intbvec.at(1);// 有边界检查: 2intcvec.front();// 首元素: 1intdvec.back();// 末元素: 3int*datavec.data();// 原始指针// 容量管理 vec.reserve(100);// 预分配容量vec.shrink_to_fit();// 释放多余容量size_t capvec.capacity();// 当前容量size_t szvec.size();// 当前大小// 现代C vec.emplace_back(5);// 原地构造避免拷贝std::deque - 双端队列本质分段连续数组#includedequestd::dequeintdq{2,3,4};// 双端操作 dq.push_front(1);// 头部添加: {1,2,3,4}dq.push_back(5);// 尾部添加: {1,2,3,4,5}dq.pop_front();// 头部删除: {2,3,4,5}dq.pop_back();// 尾部删除: {2,3,4}// 元素访问 intadq[1];// 随机访问: 3intbdq.at(1);// 安全访问: 3intcdq.front();// 头部: 2intddq.back();// 尾部: 4// 修改操作 dq.insert(dq.begin()1,9);// 中间插入: {2,9,3,4}dq.erase(dq.begin()2);// 中间删除: {2,9,4}std::list - 双向链表本质双向链表#includeliststd::listintlst{1,3,4};// 双端操作 lst.push_front(0);// 头部添加: {0,1,3,4}lst.push_back(5);// 尾部添加: {0,1,3,4,5}lst.pop_front();// 头部删除: {1,3,4,5}lst.pop_back();// 尾部删除: {1,3,4}// 高效插入删除 autoitlst.begin();it;// 指向1lst.insert(it,2);// {1,2,3,4} - O(1)itlst.begin();it;// 指向3lst.erase(it);// {1,2,4} - O(1)// 特殊操作 lst.sort();// 排序: {1,2,4}lst.unique();// 去重lst.reverse();// 反转: {4,2,1}// 链表拼接 std::listintother{5,6};lst.splice(lst.end(),other);// {4,2,1,5,6}std::forward_list - 单向链表本质单向链表更省内存#includeforward_liststd::forward_listintflst{2,3,4};// 单端操作 flst.push_front(1);// 头部添加: {1,2,3,4}flst.pop_front();// 头部删除: {2,3,4}// 特殊插入 autoitflst.begin();it;// 指向3flst.insert_after(it,9);// {2,3,9,4} - 在指定位置后插入// 特殊删除 itflst.begin();flst.erase_after(it);// {2,9,4} - 删除指定位置后的元素// 注意没有size()、push_back()、pop_back()std::array - 固定大小数组本质编译期固定大小的数组#includearraystd::arrayint,5arr{1,2,3,4,5};// 元素访问 intaarr[1];// 2intbarr.at(1);// 2intcarr.front();// 1intdarr.back();// 5// 容量信息 boolemptyarr.empty();// falsesize_t sizearr.size();// 5size_t max_sizearr.max_size();// 5// 填充操作 arr.fill(0);// {0,0,0,0,0}// 注意大小在编译期确定无法改变2 容器适配器std::stack - 后进先出本质LIFO栈#includestackstd::stackintstk;// 栈操作 stk.push(1);// 压栈: [1]stk.push(2);// [1,2]stk.push(3);// [1,2,3]inttopstk.top();// 查看栈顶: 3stk.pop();// 出栈: [1,2]boolemptystk.empty();// falsesize_t sizestk.size();// 2// 底层容器 std::stackint,std::vectorintstk_vec;// 使用vectorstd::stackint,std::listintstk_list;// 使用liststd::queue - 先进先出本质FIFO队列#includequeuestd::queueintq;// 队列操作 q.push(1);// 入队: [1]q.push(2);// [1,2]q.push(3);// [1,2,3]intfrontq.front();// 队首: 1intbackq.back();// 队尾: 3q.pop();// 出队: [2,3]boolemptyq.empty();// falsesize_t sizeq.size();// 2std::priority_queue - 优先队列本质堆实现的优先级队列#includequeue// 默认大顶堆std::priority_queueintpq;// 优先队列操作 pq.push(3);// 添加: [3]pq.push(1);// [3,1]pq.push(4);// [4,3,1]pq.push(2);// [4,3,2,1]inttoppq.top();// 最大元素: 4pq.pop();// 删除最大: [3,2,1]boolemptypq.empty();// falsesize_t sizepq.size();// 3// 小顶堆 std::priority_queueint,std::vectorint,std::greaterintmin_pq;min_pq.push(3);// [3]min_pq.push(1);// [1,3]min_pq.push(4);// [1,3,4]intmin_topmin_pq.top();// 最小元素: 13 关联容器std::set - 唯一键有序集合本质红黑树实现的有序集合#includesetstd::setints{3,1,4,1,5};// {1,3,4,5}// 插入操作 auto[it1,success1]s.insert(2);// {1,2,3,4,5}, success1trueauto[it2,success2]s.insert(3);// 不变, success2false// 查找操作 autoits.find(3);// 返回迭代器if(it!s.end()){intvalue*it;// 3}boolexistss.contains(4);// C20: trueintcounts.count(1);// 1 (存在)// 范围操作 autolowers.lower_bound(2);// 第一个2的元素autouppers.upper_bound(4);// 第一个4的元素// 删除操作 s.erase(3);// 删除3: {1,2,4,5}s.erase(it);// 通过迭代器删除std::multiset - 可重复键有序集合本质允许重复的有序集合#includesetstd::multisetintms{1,3,3,4};// 重复插入 ms.insert(3);// {1,3,3,3,4}// 计数操作 intcountms.count(3);// 3// 范围查找 autorangems.equal_range(3);for(autoitrange.first;it!range.second;it){std::cout*it ;// 3 3 3}std::unordered_set - 唯一键无序集合本质哈希表实现的无序集合#includeunordered_setstd::unordered_setintus{3,1,4,1,5};// {1,3,4,5} 顺序不定// 基本操作 us.insert(2);// 插入2us.erase(3);// 删除3boolfoundus.contains(4);// 检查存在// 哈希表管理 us.reserve(100);// 预分配桶floatload_factorus.load_factor();// 当前负载因子size_t bucket_countus.bucket_count();// 桶数量// 桶迭代 for(size_t i0;ius.bucket_count();i){size_t bucket_sizeus.bucket_size(i);}std::unordered_multiset - 可重复键无序集合本质允许重复的无序集合#includeunordered_setstd::unordered_multisetintums{1,3,3,4};// 重复操作 ums.insert(3);// 再添加一个3intcountums.count(3);// 3autorangeums.equal_range(3);// 所有等于3的元素4 关联数组std::map - 唯一键有序映射本质红黑树实现的有序键值对#includemapstd::mapstd::string,intscores{{Alice,95},{Bob,87}};// 插入操作 scores[Charlie]92;// 插入或更新auto[it,success]scores.insert({David,78});// 访问操作 intalice_scorescores[Alice];// 95intbob_scorescores.at(Bob);// 87// 查找操作 autofind_itscores.find(Alice);if(find_it!scores.end()){auto[key,value]*find_it;// 结构化绑定}boolhas_evescores.contains(Eve);// false// 范围操作 autolowerscores.lower_bound(B);// 第一个键Bautoupperscores.upper_bound(C);// 第一个键C// 现代插入 scores.emplace(Eve,88);// 原地构造scores.try_emplace(Frank,91);// 键不存在时插入scores.insert_or_assign(Alice,96);// 插入或更新std::multimap - 可重复键有序映射本质允许重复键的有序映射#includemapstd::multimapstd::string,intmmap{{Alice,95},{Alice,88},{Bob,87}};// 重复插入 mmap.insert({Alice,92});// 允许重复键// 范围查找 autorangemmap.equal_range(Alice);for(autoitrange.first;it!range.second;it){std::coutit-second ;// 95 88 92}std::unordered_map - 唯一键无序映射本质哈希表实现的无序键值对#includeunordered_mapstd::unordered_mapstd::string,intword_count;// 基本操作 word_count[hello]3;// 插入或更新word_count[world];// 更新word_count.erase(hello);// 删除// 安全访问 if(word_count.find(test)!word_count.end()){intcountword_count[test];// 安全访问}// 哈希表管理 word_count.reserve(1000);// 预分配word_count.rehash(500);// 重新哈希// 现代操作 word_count.emplace(new,1);// 原地构造word_count.try_emplace(key,42);// 安全插入std::unordered_multimap - 可重复键无序映射本质允许重复键的无序映射#includeunordered_mapstd::unordered_multimapstd::string,intummap;// 重复插入 ummap.insert({key,1});ummap.insert({key,2});// 允许重复// 范围操作 autorangeummap.equal_range(key);for(autoitrange.first;it!range.second;it){std::coutit-second ;// 1 2}5 字符串std::string - 字符序列本质动态字符数组#includestringstd::string strHello;// 修改操作 str World;// 拼接: Hello Worldstr.append(!);// 追加: Hello World!str.insert(5,,);// 插入: Hello, World!str.erase(5,1);// 删除: Hello World!// 查找操作 size_t posstr.find(World);// 6size_t rposstr.rfind(l);// 9 (最后一个l)// 子串操作 std::string substr.substr(6,5);// Worldstr.replace(6,5,C);// Hello C!// 数值转换 std::string num_strstd::to_string(42);// 42intnumstd::stoi(123);// 123// C字符串交互 constchar*cstrstr.c_str();// C风格字符串size_t lenstr.length();// 字符串长度位集合紧凑的布尔数组std::bitset - 固定大小位集合本质编译期固定大小的位数组#includebitsetstd::bitset8bs(0b10101010);// 170// 位操作 bs.set(0);// 设置第0位: 0b10101011bs.reset(1);// 清除第1位: 0b10101001bs.flip(2);// 翻转第2位: 0b10101101// 访问操作 boolbit0bs[0];// 访问第0位boolbit1bs.test(1);// 安全访问第1位// 统计操作 size_t countbs.count();// 设置位数量: 5boolanybs.any();// 是否有设置位: trueboolallbs.all();// 是否所有位都设置: falseboolnonebs.none();// 是否没有设置位: false// 转换操作 std::string strbs.to_string();// 10101101unsignedlongnumbs.to_ulong();// 173性能特征快速参考时间复杂度对比表操作vectordequelistsetunordered_set随机访问O(1)O(1)O(n)O(log n)O(1) avg头部插入O(n)O(1)O(1)--尾部插入O(1)O(1)O(1)--中间插入O(n)O(n)O(1)O(log n)O(1) avg查找O(n)O(n)O(n)O(log n)O(1) avg迭代器失效规则容器插入操作删除操作vector所有迭代器可能失效被删元素之后的迭代器失效deque除首尾插入外可能失效除首尾删除外可能失效list不会失效只有被删元素迭代器失效关联容器不会失效只有被删元素迭代器失效选择决策树基础选择流程需要键值对 ├─ 是 → 需要有序 │ ├─ 是 → 键是否唯一 │ │ ├─ 是 → std::map │ │ └─ 否 → std::multimap │ └─ 否 → 键是否唯一 │ ├─ 是 → std::unordered_map │ └─ 否 → std::unordered_multimap │ └─ 否 → 需要唯一元素 ├─ 是 → 需要有序 │ ├─ 是 → std::set │ └─ 否 → std::unordered_set │ └─ 否 → 主要操作在首尾 ├─ 是 → std::deque ├─ 否 → 需要随机访问 │ ├─ 是 → std::vector │ └─ 否 → std::list │ └─ 特定访问模式 ├─ LIFO → std::stack ├─ FIFO → std::queue └─ 优先级 → std::priority_queue性能优化指南// 1. 预分配空间std::vectorintvec;vec.reserve(1000);// 避免重复分配std::unordered_mapint,intumap;umap.reserve(1000);// 避免重新哈希// 2. 使用emplace避免拷贝std::vectorstd::stringvec;vec.emplace_back(hello);// 原地构造std::mapint,std::stringmap;map.emplace(1,world);// 避免临时对象// 3. 利用移动语义std::vectorstd::stringgetData(){std::vectorstd::stringdata;// ... 填充数据returndata;// 移动而非拷贝}// 4. 选择合适的算法std::vectorintdata{5,3,1,4,2};std::sort(data.begin(),data.end());// 快速排序std::stable_sort(data.begin(),data.end());// 稳定排序// 5. 利用视图避免拷贝 (C20)#if__has_include(ranges)#includerangesstd::vectorintnumbers{1,2,3,4,5};autoeven_numbersnumbers|std::views::filter([](intn){returnn%20;});// 不拷贝数据#endif现代C最佳实践1. 结构化绑定 (C17)std::mapstd::string,intscores{{Alice,95},{Bob,87}};// 传统方式for(constautopair:scores){std::coutpair.first: pair.secondstd::endl;}// 现代方式for(constauto[name,score]:scores){std::coutname: scorestd::endl;}2. 透明比较器 (C14)std::setstd::string,std::lesstransparent_set;transparent_set.insert(hello);boolfoundtransparent_set.contains(hello);// 不需要构造std::string3. 安全访问模式std::optionalintsafeGet(conststd::mapstd::string,intmap,conststd::stringkey){autoitmap.find(key);if(it!map.end()){returnit-second;}returnstd::nullopt;}// 使用if(autovaluesafeGet(scores,Alice)){std::coutScore: *valuestd::endl;}总结STL容器的设计哲学RAII原则自动管理资源生命周期泛型编程模板实现类型无关算法迭代器抽象统一访问接口算法与容器分离通过迭代器连接异常安全提供基本异常安全保证掌握这些容器不仅意味着知道它们的API更重要的是理解它们的设计思想和适用场景。在实际开发中正确的容器选择往往比算法优化带来更大的性能提升。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做农产品网站酒店网站模版

常复习常加深lc3785统计 nums 与 forbidden 对应位置相同元素&#xff0c;结合元素出现次数限制 (鸽巢 贪心_最多相同元素计算使两数组对应位置元素匹配的最小交换次数class Solution { public:int minSwaps(vector<int>& nums, vector<int>& forbidden) …

张小明 2025/12/28 0:51:23 网站建设

私人做网站图片沈阳建设局网站首页

百度网盘下载限速如何彻底解决&#xff1f;Mac用户专属的3步加速方案 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘那令人崩溃的下载速…

张小明 2025/12/28 0:50:50 网站建设

做服装在哪个网站找wordpress 后台介绍

LangFlow Sumo Logic&#xff1a;让日志“开口说话”的智能运维新范式 在现代云原生架构中&#xff0c;系统每秒可能产生数万条日志。面对海量的ERROR、WARN和堆栈信息&#xff0c;运维团队常常陷入“告警疲劳”——不是没发现异常&#xff0c;而是被噪声淹没&#xff0c;错过…

张小明 2025/12/28 0:49:09 网站建设

为网站做seo贡井区建设局网站?

2025最新&#xff01;9个AI论文工具测评&#xff1a;本科生写论文痛点全解析 2025年AI论文工具测评&#xff1a;精准匹配本科生写作需求 随着人工智能技术的快速发展&#xff0c;越来越多的本科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上五花八门的AI论文工…

张小明 2025/12/28 0:48:03 网站建设

企业网站安全建设方案数据库主机wordpress

每次开启Switch&#xff0c;那个千篇一律的开机画面是否让你感到审美疲劳&#xff1f;今天&#xff0c;我将为你揭秘一个简单却强大的个性化技巧——通过自定义bootlogo让你的主机从启动瞬间就充满个性。这不是复杂的系统修改&#xff0c;而是通过巧妙的视觉设计实现的完美定制…

张小明 2025/12/28 0:46:56 网站建设

单仁营销网站的建设制作短视频的软件有哪些

在 Linux 上玩转 JFlash&#xff1a;从零开始的嵌入式烧录实战指南 你有没有遇到过这样的场景&#xff1f; 开发板插上电脑&#xff0c;准备烧个固件调试一下&#xff0c;结果发现——你的主力系统是 Linux。而手头的工具链却要求必须切到 Windows 才能用图形化烧录工具&…

张小明 2025/12/28 0:46:23 网站建设