在C++的STL库中,有许多种不同结构、不同用途的容器。容器又可以分为两大类,分别是:
序列式容器(sequence containers)关联式容器(associative containers)其中序列式容器包括vector、queue和list等,本文中的map和set属于关联式容器。 先说说set容器,set的特性是,所有的元素再插入的时候都会根据元素的键值来排序。(默认为升序,需要时可以传入模板参数改为降序排序)。set元素的键值就是实值,实值就是键值,所以set中的值不能修改,只能做插入和删除的操作。set不允许两个元素有相同的键值。 set的底层实现是红黑树,所以set容器的效率非常高。
set常用成员有(具体用法见SetTest())
1. 迭代器(前向/反向/const迭代器)2. Insert a. 直接插入一个值(返回pair <K,V>)first->元素位置 second->成功标志 b. 在某位置插入 c. 插入一个区间3. Erase a. 删除一个有效迭代器所指的位置,否则assert b. 删除一个值 未找到不报错, 找到即删除 c. 删除一个迭代器区间的值4. Swap5. Clear6. Emplace——构造插入,比insert效率高(C++11)7. Find8. count——常用于快速判断一个元素是否存在容器map的特性是,所有元素都会根据元素的键值自动排序。map的所有元素都是pair,同时拥有实值和键值。pair的第一元素被视为键值,第二元素被视为实值。map同样不允许有两个元素拥有相同的键值,也不能修改元素的键值,不过实值可以修改。map与set相似的是底层也是map容器实现。
map常用成员(测试用例见MapTest)
1. Insert a. 插入一个pair<Key,Value>() 2. Operator[] a. 以K值为参数,返回V值引用
运行结果
新闻热点
疑难解答
图片精选