pair<T1,T2>P1;
pair<T1,T2>p1(v1,v2);//v1为T1类型,v2为T2类型
make_pair(v1,v2);//返回一个pair对象
p.first;
p.second;
关联容器不能通过容器大小定义,不能用resize。
map<k,v>m(m2);
map<k,v>m;
map<k,v>m(b,e); //b,e为map迭代器。
键必须支持<。
map<k,v>::value_type为pair类型 const key_type mapped_type
map<k,v>::mapped_type 为键关联的值类型
map<k,v>::key_type 为键类型
map添加元素比较简便。类似下标就可。
如map<string,int>word;
word["a"]=1;//insert(make_pair("a",1);
word["a"]返回一个关联值
因此可以用map方便记录单词出现的次数。
map<string,int>word_count;
string word;
while(cin>>word)
{
word_count[word]++;
}
map的insert
m.insert(e); //e为pair 返回一个e的一个迭代器和bool判断是否成功插入
m.insert(beg,end);//返回void
m.insert(iter,e); //iter为辅助,返回迭代器,指向m中具有特定键的元素
m.count(k); //返回m中k的出现次数
m.find(k); //是否存在按k索引的元素,返回元素迭代器
m.erase(k);//删除键为k的元素。返回size_type类型,表示删除的元素个数。
m.erase(p);//删除迭代器p所指的元素,返回void
m.erase(b,e); //删除b,e的元素返回void
map可以作为单词转换,电话簿,字典。
set不支持下标操作符,
insert(key); //返回pair <iterator ,bool >;
set可以帮map忙记录单词排除的集。
multimap 不支持下标运算。
insert总会加元素。erase会删除所有符合的元素,返回删除个数。
在multimap中一个键所关联的元素必然相邻存放,因此找到第一个后,只要迭代器++,则能找到全部。
分享到:
相关推荐
8. 顺序容器和关联容器的使用,包括vector、list、map、set等容器类型的操作。 9. 泛型算法的使用,如只读算法、写容器元素的算法和对容器元素重新排序的算法。 10. 类的定义、构造函数、复制控制、重载操作符、继承...
C++ primer 5th,第十一章——关联容器,笔记&思维导图 按教材整理。
10. 第十章关联容器:涵盖`std::set`、`std::map`、`std::multiset`、`std::multimap`等,它们基于键值对的存储方式及查找、插入和删除操作。 11. 第十一章泛型算法:介绍C++标准库中的算法,如排序、搜索、交换、...
`std::map`是C++中的一种关联容器,它按照键值对的形式组织数据,内部通常采用红黑树实现,提供O(log n)的时间复杂度进行插入、删除和查找操作。在文本查询中,`std::map`可以用来建立单词与出现次数的关系,或者...
C++ Primer中文版(第5版)[203M]分3个压缩包 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数...
1. 容器:包括顺序容器(如vector、deque、list)和关联容器(如set、map),提供数据存储和操作的接口。 2. 迭代器:遍历容器元素的工具,类似于指针但更安全、功能更强大。 3. 队列与栈:queue和stack是基于容器的...
第十章“关联容器”如std::set、std::map和std::multiset等,习题解答会涵盖这些容器的插入、查找、删除以及排序机制。 第十一章“泛型算法”讨论了C++标准库中的通用算法,如排序、查找、变换等。习题解答会涉及到...
本文将深入解析C++ Primer中提到的关联容器,特别是map和set的使用。 首先,关联容器包括set、map、multiset和multimap四种类型。set和map都是基于红黑树实现的,它们维护了元素的排序顺序。set存储的是单个键,不...
C++标准库提供了多种容器,如顺序容器(vector、list等)和关联容器(set、map等),用于存储数据。容器类模板提供了迭代器支持,用于顺序访问容器中的元素。 泛型算法是独立于容器类型和元素类型的算法,可以应用...
这与关联容器形成了对比,关联容器中的元素位置是由其键值决定的。本文档主要探讨了顺序容器的各种类型及其特性。 - **Vector**:一种可变大小的数组。当需要频繁地在数组末尾添加元素时,`vector`是非常高效的选择...
除了上述的,标准库还提供了许多其他辅助类和函数,如`std::string`用于处理字符串,`std::vector`和`std::array`作为动态和固定大小的数组,`std::map`和`std::unordered_map`用于关联容器,`std::pair`和`std::...
例如,map提供关联数组,可以通过键值快速查找数据,而find算法可以用来定位容器中的特定元素。 7. **迭代器**:迭代器是访问容器内元素的主要工具,可以方便地遍历容器并执行查询操作。理解如何使用迭代器将极大地...
《C++ Primer Plus 编程练习源码工程 第13章》是一个专注于C++学习者提升编程技能的资源集合。这个源码工程包含了作者LeonardoLiuwenbo在阅读《C++ Primer Plus》这本书时所做的各种编程练习,旨在帮助读者深入理解...
第十章 关联容器:介绍set、multiset、map和multimap等关联容器,它们通过键值对存储元素,并提供了快速查找和插入功能。 第十一章 泛型算法:介绍了std::algorithm库中的各种泛型算法,如排序、查找、拷贝和变换,...
内容概要:这是关于《C++ Primer学习笔记》的文章,涵盖多种类型转换、异常机制、类静态成员、IO库介绍、顺序容器操作、泛型算法应用、关联容器概念与使用详解、动态内存智能指针管理、构造函数与拷贝构造细节探讨、...
7. **STL容器深入探讨**:包括动态数组(vector)、链表(list)、关联容器(如set和map),以及容器适配器(如stack和queue)的使用和实现原理。 8. **智能指针**:C++11引入了智能指针,如unique_ptr、shared_ptr...
第十章关联容器则介绍了STL中的关联容器,如set、multiset、map、multimap等,这些容器能够存储键值对,并提供快速的数据检索能力。 第十一章泛型算法是C++标准库中的一组泛型函数,它们可以作用于STL容器中的元素...
`std::set`和`std::map`是关联容器,提供了快速查找和插入功能。STL的使用极大地提高了代码的效率和可读性。 ### 文件输入输出 C++提供了丰富的文件操作接口,可以读写文本文件和二进制文件。`fstream`库包含了...