随笔分类 - STL
C++ STL 的学习笔记
摘要:map.find(key); //查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回map.end(); map.count(key); //返回容器中键值为key的对组个数。对map来说,要么是0,要么是1;对multimap来说,值>=0。 map.lower_bound(ke
阅读全文
摘要:Map & multimap 的删除 map.clear(); //删除所有元素 map.erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。 map.erase(beg,end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。 map.erase(
阅读全文
摘要:1. Map & multimap 的大小 map.size(); //返回容器中元素的数目 map.empty();//判断容器是否为空, 容器中有内容将会返回 false 代码示例: 1 #include <iostream> 2 #include <map> 3 4 using namespa
阅读全文
摘要:1. Map & multimap 的拷贝构造与赋值 map(const map &mp); //拷贝构造函数 map& operator=(const map &mp); //重载等号操作符 map.swap(mp); //交换两个集合容器 拷贝构造代码示例: 1 #include <iostre
阅读全文
摘要:1. Map & multimap 的排序与遍历 map<T1,T2,less<T1> > mapA; //该容器是按键的升序方式排列元素。如果未指定less<T1> 函数对象,默认采用less<T1>函数对象。 map<T1,T2,greater<T1>> mapB; //该容器是按键的降序方式排
阅读全文
摘要:1. 容器(Map & multimap)的插入 map.insert(...); //往容器插入元素,返回pair<iterator,bool> map中插入元素的四种方式: 1 #include <iostream> 2 #include <map> 3 4 using namespace st
阅读全文
摘要:1. map/multimap 的简介 map 是标准的关联式容器,一个 map 里存储的元素是一个键值对序列,叫做 (key,value) 键值对。它提供基于 key 快速检索数据的能力。 map 中 key 值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入
阅读全文
摘要:1. set.find(elem); //查找elem元素,返回指向elem元素的迭代器。 1 #include <iostream> 2 #include <set> 3 4 using namespace std; 5 6 int main() 7 { 8 set<int> setInt; 9
阅读全文
摘要:set.clear(); //清除所有元素 set.erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。 set.erase(beg,end); //删除区间[beg,end)的所有元素,返回下一个元素的迭代器。 set.erase(elem); //删除容器中值为ele
阅读全文
摘要:1. set.size(); //返回容器中元素的数目 2. set.empty();//判断容器是否为空 empty() 是由一下代码实现的,可以发现,当长度为0时返回 false,以此判断容器为空 1 _NODISCARD bool empty() const noexcept 2 { 3 re
阅读全文
摘要:1.set.insert(elem); //在容器中插入元素。 2.set.begin(); //返回容器中第一个数据的迭代器。 3.set.end(); //返回容器中最后一个数据之后的迭代器。 4.set.rbegin(); //返回容器中倒数第一个元素的迭代器。 5.set.rend(); /
阅读全文
摘要:1. 使用 insert 插入时的返回值: 将一个元素插入 (insert) 到 set 或 multiset 中时,如果插入失败返回的类型是一个 pair 的自定类型,insert 源码如下: insert 的重载方式目前有8种,本篇说明的是 1 template <bool _Multi2 =
阅读全文
摘要:Set/multiset 中元素的存储数据总是会按照从大到小或者从小到大排列,这个是怎么实现的?这就要说 “仿函数” 这个概念了。 仿函数概念 1. 尽管函数指针被广泛用于实现函数回调,但C++还提供了一个重要的实现回调函数的方法,那就是函数对象。 2. functor,翻译成函数对象,伪函数,它是
阅读全文
摘要:Set & multiset 在vs2019编译器中提供了16种构造方法 1.默认的无参构造 2.比较容器内容,key_comp()函数返回一个比较key的函数。 3.使用迭代器的区间拷贝,拷贝这部分数据到当前容器 4. 5. 6.set 中迭代器标识区间与其参数set容器进行对比,Key_Comp
阅读全文
摘要:1. 默认构造 set<int> setInt; //一个存放int的set容器。 set<float> setFloat; //一个存放float的set容器。 set<string> setString; //一个存放string的set容器。 multiset<int> mulsetInt;
阅读全文
摘要:1. Set 和 multiset 的概念 set 和 multiset 是一个集合容器,其中 set 所包含的元素是唯一的,集合中的元素按一定的顺序排列。set 采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比 vector 快。在n个数中查找目标数的效率是 log2N
阅读全文
摘要:变参模板 (Variadic Template) - 使得 emplace 可以接受任意参数,这样就可以适用于任意对象的构建 完美转发 - 使得接收下来的参数 能够原样的传递给对象的构造函数,这带来另一个方便性 先来看看下边的代码,看一下C11标准中提供的变参模板的用法之一: 1 #include
阅读全文
摘要:list.reverse(); //反转链表,比如list包含1, 2, 3, 4, 5五个元素,运行此方法后,list就包含5, 4, 3, 2, 1元素。 1 #include <iostream> 2 #include <list> 3 4 using namespace std; 5 6 i
阅读全文
摘要:list.front(); //返回第一个元素 list.back(); //返回最后一个元素 1 #include <iostream> 2 #include <list> 3 4 using namespace std; 5 6 int main() 7 { 8 int num[] = { 11
阅读全文
摘要:list.assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身 1 #include <iostream> 2 #include <list> 3 4 using namespace std; 5 6 int main() 7 { 8 int num[] = {
阅读全文


浙公网安备 33010602011771号