Advertisement

C++ STL初学者指南(7):探索multimap和multiset的运用

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本篇文章是《C++ STL初学者指南》系列教程第七篇,主要内容为讲解STL中多值关联容器multimap和multiset的使用方法及其应用场景。 本段落主要介绍了C++ STL中的multimap和multiset的使用方法。这两个容器都是STL的重要组成部分。 一、Multimap(一对多索引) Multimap是关联容器的一种,在功能上与map类似,但允许键值重复出现。它具有快速查找、插入和删除元素的优点,并且能够保持键值顺序。 在使用multimap时,需要包含头文件并引用std命名空间。基本操作包括初始化、添加元素、遍历集合、单键查询以及范围查询等。 以下是一个示例程序: ```cpp #include #include #include using namespace std; int main() { multimap mapStudent; multimap::iterator iter, beg, end; // 添加元素 mapStudent.insert(pair(0, student_one)); mapStudent.insert(pair(0, student_two)); // 错误,应为不同的键值对或不同名称 mapStudent.insert(pair(1, student_three)); // 遍历 for (iter = mapStudent.begin(); iter != mapStudent.end(); iter++) cout << iter->first << \t << iter->second << endl; // 单键查询 int count = mapStudent.count(0); iter = mapStudent.find(0); // 查找第一个匹配的元素 for (int i = 0; i < count; ++i, ++iter) cout << iter->first << \t << iter->second << endl; // 范围查询 beg = mapStudent.lower_bound(1); end = mapStudent.upper_bound(2); // 错误,应为不包括的上限值(此处假设没有键值2) for (; beg != end; ++beg) cout << beg->first << \t << beg->second << endl; // 删除 iter = mapStudent.find(1); if (iter != mapStudent.end()) mapStudent.erase(iter); return 0; } ``` 二、Multiset(多元集合) 与set相似,multiset也属于关联容器类型,但允许元素重复。它具有快速插入和删除以及查找的优点,并保持了顺序性。 基本操作包括初始化、添加元素、遍历等。 以下是一个使用multiset的示例程序: ```cpp #include #include #include using namespace std; int main() { multiset setInt; setInt.insert(5); setInt.insert(2); setInt.insert(8); setInt.insert(2); // 允许重复元素 for (auto iter = setInt.begin(); iter != setInt.end(); ++iter) cout << *iter << ; return 0; } ``` Multimap和multiset都是STL容器中的重要组件,能够在保持顺序的同时提供高效的查找、插入与删除操作。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • C++ STL7):multimapmultiset
    优质
    本篇文章是《C++ STL初学者指南》系列教程第七篇,主要内容为讲解STL中多值关联容器multimap和multiset的使用方法及其应用场景。 本段落主要介绍了C++ STL中的multimap和multiset的使用方法。这两个容器都是STL的重要组成部分。 一、Multimap(一对多索引) Multimap是关联容器的一种,在功能上与map类似,但允许键值重复出现。它具有快速查找、插入和删除元素的优点,并且能够保持键值顺序。 在使用multimap时,需要包含头文件并引用std命名空间。基本操作包括初始化、添加元素、遍历集合、单键查询以及范围查询等。 以下是一个示例程序: ```cpp #include #include #include using namespace std; int main() { multimap mapStudent; multimap::iterator iter, beg, end; // 添加元素 mapStudent.insert(pair(0, student_one)); mapStudent.insert(pair(0, student_two)); // 错误,应为不同的键值对或不同名称 mapStudent.insert(pair(1, student_three)); // 遍历 for (iter = mapStudent.begin(); iter != mapStudent.end(); iter++) cout << iter->first << \t << iter->second << endl; // 单键查询 int count = mapStudent.count(0); iter = mapStudent.find(0); // 查找第一个匹配的元素 for (int i = 0; i < count; ++i, ++iter) cout << iter->first << \t << iter->second << endl; // 范围查询 beg = mapStudent.lower_bound(1); end = mapStudent.upper_bound(2); // 错误,应为不包括的上限值(此处假设没有键值2) for (; beg != end; ++beg) cout << beg->first << \t << beg->second << endl; // 删除 iter = mapStudent.find(1); if (iter != mapStudent.end()) mapStudent.erase(iter); return 0; } ``` 二、Multiset(多元集合) 与set相似,multiset也属于关联容器类型,但允许元素重复。它具有快速插入和删除以及查找的优点,并保持了顺序性。 基本操作包括初始化、添加元素、遍历等。 以下是一个使用multiset的示例程序: ```cpp #include #include #include using namespace std; int main() { multiset setInt; setInt.insert(5); setInt.insert(2); setInt.insert(8); setInt.insert(2); // 允许重复元素 for (auto iter = setInt.begin(); iter != setInt.end(); ++iter) cout << *iter << ; return 0; } ``` Multimap和multiset都是STL容器中的重要组件,能够在保持顺序的同时提供高效的查找、插入与删除操作。
  • Visual C++ 2013(第7版)
    优质
    《Visual C++ 2013初学者指南(第7版)》是一本专为编程新手设计的教程书籍,详细介绍了使用Visual C++进行应用程序开发的基础知识与实用技巧。 著名编程图书作家Ivor Horton的新书《引导学习Visual C++ 2013》是C++语言的一本畅销书籍,延续了Horton一贯的写作风格。书中详尽地介绍了标准C++语言以及如何在Visual C++中使用它们,并根据Visual C++ 2013进行了全面更新。通过大量循序渐进的编程示例,本书引导读者掌握C++开发的所有关键技能,即使没有编程经验也能轻松上手。
  • Visual C++ 2013(第7版)
    优质
    《Visual C++ 2013初学者指南(第7版)》是一本针对编程新手的教程书籍,详细介绍了如何使用Visual C++进行应用程序开发。书中不仅涵盖了语言的基础知识和语法要点,还深入浅出地讲解了面向对象程序设计、多线程处理等高级主题,并通过大量实例帮助读者快速掌握实践技能,是学习C++编程的理想选择。 《Visual C++ 2013入门经典 第7版》是一本专为初学者设计的教程,旨在帮助读者掌握使用Visual Studio 2013进行C++编程的基础知识。作为一种强大且通用的语言,C++融合了面向对象、泛型和过程化编程的特点,在系统软件、游戏开发、设备驱动及嵌入式系统等领域有着广泛的应用。 在VS2013环境下学习C++时,首先需要熟悉IDE的界面与基本操作,包括创建新项目、设置工程属性以及组织源代码文件等。Visual Studio 2013提供了用户友好的图形界面和丰富的调试工具,使开发过程更加便捷高效。 本书详细介绍了C++语言的基本语法,涵盖了变量、数据类型、运算符、控制结构(如if-else语句、switch-case语句及for/while循环)、函数声明与定义以及类与对象等核心概念。其中,类是实现面向对象编程的关键要素;通过封装、继承和多态性,可以构建复杂的软件架构。 C++中的泛型编程允许开发者编写可重用的代码以适应不同数据类型的需求,在VS2013中创建并调用模板函数变得非常方便且高效。另外,异常处理机制也是学习的重要内容之一;通过try/catch块来编写健壮性更高的程序是十分必要的。 输入输出操作的标准库iostream为C++提供了cin、cout等对象以实现便捷的数据读取与结果输出功能。而作为现代C++编程不可或缺的一部分,STL(标准模板库)则包含容器(如vector、list和map)、迭代器、算法及函数对象等内容;这些组件极大地提高了代码的可读性和复用性。 调试是实际开发过程中至关重要的环节,在VS2013中提供的强大调试工具包括断点设置、单步执行查看变量值以及调用堆栈等,帮助开发者轻松定位和修复程序中的错误问题。通过本书附带的各种示例项目,读者能够逐步理解并掌握C++的各个知识点;从简单的程序到复杂的类设计乃至对STL与模板的应用实践。 《Visual C++ 2013入门经典 第7版》是一本全面且实用的学习资料,无论你是编程新手还是希望提升技能水平的专业开发者都可从中获得宝贵的知识和经验。通过学习,你将能够熟练利用Visual Studio 2013这一强大的工具编写出高效稳定的C++程序代码。
  • Visual C++ 2013(第7版).pdf
    优质
    本书为《Visual C++ 2013初学者指南》第七版,全面介绍了Visual C++的基础知识和编程技巧,适合初学者快速入门。 《Visual C++ 2013入门经典》第7版是一本全面介绍Microsoft Visual C++ 2013开发环境及其编程技巧的书籍。书中涵盖了从基础语法到高级应用的各种主题,适合初学者以及有一定经验的程序员阅读和参考。这本书通过详细的示例代码、实用教程及深入浅出的技术解析帮助读者掌握C++语言的核心概念,并能够使用Visual C++ 2013进行高效开发。
  • C++ STL(3):deque双向队列技巧
    优质
    本篇文章是《C++ STL初学者指南》系列教程的第三部分,主要介绍STL中的deque容器及其应用技巧。通过实例解析双向队列的基本操作与高级特性。适合初学者学习和掌握。 在 C++ STL 中,deque(Double Ended Queues,双向队列)是一种非常有用的容器类型,它允许快速地在其头部和尾部进行插入与删除操作。本段落将详细介绍 deque 的使用方法,以便读者更好地理解和应用该容器。 一、deque 简介 deque 是一种支持在两端高效添加或移除元素的序列式容器。它的行为类似于 vector 容器,但不同于 vector 仅允许在其末尾执行这些操作,deque 在头部和尾部都提供了相同级别的效率。 二、初始化与赋值 使用 deque 首先需要包含 `` 头文件,并通过如 `deque v;` 的声明语句创建一个整型容器。可以利用 `assign()` 方法将特定数量的元素赋予 deque,例如:`v.assign(10, 2);` 将会生成一个含有十个值为 2 的元素的新 deque。 三、添加元素 对于向 deque 中增加新数据,deque 提供了多种方法。比如使用 `push_front(x)` 在头部插入一个新的整数 x;或者通过 `push_back(i)` 方法在尾部追加新的数值 i。 四、遍历与逆序遍历 为了访问或处理容器中的所有元素,可以采用迭代器来实现:`for_each(v.begin(), v.end(), print);` 这样的代码块能够对 deque 中的每个项目执行特定操作。若需反向进行,则可利用 `rbegin()` 和 `rend()` 来获取逆序迭代器。 五、插入与删除元素 deque 支持在指定位置插入或移除元素,例如:使用 `insert(v.begin() + 3, 99)` 在索引为三的位置添加值为 99 的新元素;利用 `erase(v.begin() + 3)` 则可以将该位置的元素删除。 六、访问特定元素 除了遍历整个容器之外,还可以通过 `front()` 和 `back()` 函数分别获取 deque 首尾两端的第一个和最后一个元素。例如:`cout << v.front();` 或者 `v.back()` 七、清空deque 最后,可以通过调用 `clear()` 方法来清除整个容器内的所有内容。 总之,deque 提供了多种灵活的操作方式以满足不同的编程需求。根据具体的应用场景选择合适的操作方法是使用 deque 的关键所在。
  • LabVIEW LabVIEW LabVIEW
    优质
    《LabVIEW初学者指南》旨在为刚刚接触LabVIEW编程的新手提供全面而易懂的入门教程。本书涵盖了从基本概念到实际应用的各种知识点,帮助读者快速掌握LabVI EW的核心技能和开发技巧。无论是学生、工程师还是科研人员,《LabVIEW初学者指南》都是理想的入门读物。 《LabVIEW入门详解》 LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器公司(National Instruments, 简称NI)开发的一种图形化编程语言,在工业、学术及研究实验室中被广泛应用于数据采集与仪器控制等领域。其核心理念是虚拟仪器,通过计算机的硬件和软件实现传统物理仪表的功能,突破了传统设备在灵活性和定制性上的局限。 虚拟仪器的主要优势在于通用性和可扩展性。一方面,它基于标准化的硬件平台运作,不同功能间的差异主要体现在软件层面,从而降低了成本,并且便于升级与维护。另一方面,借助计算机的强大计算能力,虚拟仪器能够执行复杂的运算任务及数据分析工作,为用户提供了创建高度定制化设备的可能性。 LabVIEW作为开发和操作虚拟仪器的重要工具之一采用了图形化的编程语言(G 语言)。相较于传统的文本编程方式,它使用图标和连线来表示程序逻辑关系,使得编程过程更为直观且易于理解。这种特性尤其适合非专业程序员以及科研人员快速上手并利用其功能。 LabVIEW的应用程序主要由三个部分构成:前面板、流程图及图标连接器。其中,前面板是用户与虚拟仪器互动的界面;包含各种控制(如按钮和滑块)和显示元素(例如图表或指示灯),用于操作和监控设备状态。而流程图则展示了应用程序内部逻辑结构及其数据流向,并包含了额外的计算步骤等处理过程。图标连接器定义了LabVIEW程序与其他外部系统之间的输入输出接口。 该软件强调可视化与交互性,使得用户能够快速理解其工作原理并方便地进行调试修改操作。此外, LabVIEW支持跨平台运行,在Windows、UNIX、Linux和Macintosh等多种操作系统中均能良好运作,确保广泛的应用范围及兼容能力。 综上所述,LabVIEW是虚拟仪器技术的关键组成部分,并为用户提供了一种强大的工具来构建与控制复杂的测试系统。它简化了复杂系统的开发流程并提高了工作效率,使科研人员能够专注于实验研究本身而非底层编程细节的处理工作。随着科技的进步和发展趋势,在自动化测试、数据采集和控制系统等领域中LabVIEW的应用范围将会更加广泛,成为现代科学研究中的重要辅助工具之一。
  • C++ MFC
    优质
    《C++ MFC初学者指南》是一本专为编程新手设计的学习手册,深入浅出地介绍了使用MFC进行Windows应用程序开发的基础知识和实用技巧。 第一章 VC 入门 1.1 如何学好 VC 1.2 理解 Windows 消息机制 1.3 利用 Visual C++/MFC 开发 Windows 程序的优势 1.4 利用 MFC 进行开发的通用方法介绍 1.5 MFC 中常用类,宏,函数介绍 第二章 图形输出 2.1 和 GUI 有关的各种对象 2.2 在窗口中输出文字 2.3 使用点、刷子和笔进行绘图 2.4 在窗口中绘制设备相关位图、图标及设备无关位图 2.5 使用各种映射方式 第三章 文档视结构 3.1 文档 视 图 框架窗口间的关系和消息传送规律 3.2 接收用户输入 3.3 使用菜单 3.4 文档、视图及框架之间的相互作用 3.5 利用序列化进行文件读写 3.6 MFC 中所提供的各种视类介绍 第四章 窗口控件 4.1 Button 4.2 Static Box 4.3 Edit Box 4.4 Scroll Bar 4.5 List Box/Check List Box 4.6 Combo Box 4.7 Tree Ctrl 4.8 List Ctrl 4.9 Tab Ctrl A Tool Bar B Status Bar C Dialog Bar D 利用 AppWizard 创建并使用 ToolBar、StatusBar 和 DialogBar E General Window F 关于 WM_NOTIFY 的使用方法 第五章 对话框 5.1 使用资源编辑器编辑对话框 5.2 创建有模式对话框 5.3 创建无模式对话框 5.4 在对话框中进行消息映射 5.5 在对话框中进行数据交换和数据检查 5.6 使用属性对话框 5.7 使用通用对话框 5.8 建立以对话框为基础的应用 5.9 使用对话框作为子窗口 第六章 网络通信开发 6.1 WinSock 介绍 6.2 利用 WinSock 进行无连接的通信 6.3 利用 WinSock 进行有连接的通信
  • TwinCAT2 动控制
    优质
    《TwinCAT2运动控制初学者指南》是一本专为入门级工程师设计的手册,全面介绍了如何使用贝加莱公司的TwinCAT2软件进行高效的运动控制系统开发和编程。 本书旨在教授您如何高效地使用TwinCAT NC PTP编写程序,并假设读者已经掌握了TwinCAT PLC编程技能。书中详细介绍了TwinCAT NC PTP的系统概述、在System Manager中独立硬件轴配置与调试界面的操作方法,以及如何在TwinCAT PLC Control中编写单轴和多轴运动控制程序(这些操作均不依赖于特定硬件)。此外,本书还涵盖了AX5000设备及其电机参数的具体设置步骤,并深入讲解了电子凸轮表、飞锯技术及TwinCAT NC FIFO功能的应用。
  • Xilinx 7系列 FPGA HLS.pdf
    优质
    《Xilinx 7系列FPGA HLS初学者指南》是一本专为入门级用户设计的手册,详细介绍了如何使用高级综合(HLS)技术在Xilinx 7系列现场可编程门阵列上开发高效硬件代码。 XILINX7 系列FPGA HLS入门教程帮助读者了解如何开始使用这一系列的硬件描述语言进行高层次综合设计。该教程涵盖了从基础概念到实际应用的各种知识,适合初学者快速上手并深入学习。通过本教程的学习,你将能够掌握利用HLS(High-Level Synthesis)技术在XILINX7 FPGA平台上开发高效能数字逻辑电路的方法和技巧。
  • C#文档.pdf
    优质
    《C#初学者指南文档》是一份全面介绍C#编程语言的基础教程,适合零基础学习者。包含语法、数据类型和面向对象编程等内容。 这是微软官方的C#入门教程,适合零基础学习者使用。内容全面、系统且权威,涵盖了丰富的精彩知识点。