C++ STL 总结超赞的


1 C++STL C++STL C++STL C++STL 总结总结总结总结 作者 :蒋 一泽 日期 : 2009.04.26 版本 : Ver1.2 2 一、 vector 向量 容器 ..........................................................................................................................4 1.创建 vector 对象 ......................................................................................................................4 2.尾部 元素 扩张 ..........................................................................................................................4 3.插入 元素 ..................................................................................................................................4 4.删除 元素 ..................................................................................................................................4 5.向量 的大 小 ..............................................................................................................................4 6.用迭 代器 访问 vector 元素 ......................................................................................................5 7.使用 reverse 反向 排列 算法 ....................................................................................................5 8.使用 sort 排序 算法 ..................................................................................................................5 二、 stack 堆栈 容器 ............................................................................................................................5 1.创建 stack 对象 ........................................................................................................................5 2.元素 入栈 ..................................................................................................................................5 3.读取 栈顶 元素 ..........................................................................................................................5 4.元素 出栈 ..................................................................................................................................5 5.堆栈 大小 ..................................................................................................................................6 6.堆栈 是否 为空 ..........................................................................................................................6 三、 queue 队列 容器 .......................................................................................................................... 6 1.创建 queue 对象 ...................................................................................................................... 6 2.读取 队首 元素 ..........................................................................................................................6 3.读取 队尾 元素 ..........................................................................................................................6 4.队列 大小 ..................................................................................................................................6 5队列 是否 为空 ..........................................................................................................................6 6.元素 入队 ..................................................................................................................................6 7.元素 出队 ..................................................................................................................................6 四、 priority_queue 优先 队列 容器 ....................................................................................................7 1.定义 优先 队列 ..........................................................................................................................7 2.元素 入队 ..................................................................................................................................7 3.元素 出队 ..................................................................................................................................7 4.队列 大小 ..................................................................................................................................7 5.读取 队首 元素 ..........................................................................................................................7 6.队列 是否 为空 ..........................................................................................................................7 7.重载 "<"操作 符定 义优 先级 .................................................................................................... 7 8.重载 "()"操作 符定 义优 先级 ....................................................................................................8 五、 deque 双端 队列 容器 .................................................................................................................. 8 1.创建 deque 对象 ...................................................................................................................... 8 2.插入 元素 ..................................................................................................................................8 3.删除 元素 ..................................................................................................................................8 4.前向 遍历 ..................................................................................................................................9 5.反向 遍历 ..................................................................................................................................9 六、 list 双向 链表 容器 .......................................................................................................................9 1.创建 list 对象 ...........................................................................................................................9 2.插入 元素 ..................................................................................................................................9 3.删除 元素 ................................................................................................................................10 4.元素 排序 ................................................................................................................................10 3 5.剔除 连续 重复 元素 ................................................................................................................10 6.查找 元素 ................................................................................................................................10 七、 bitset 位集 合容 器 ..................................................................................................................... 10 1.创建 bitset 对象 ..................................................................................................................... 10 2.设置 元素 值 ............................................................................................................................11 八、 set 集合 容器 ..............................................................................................................................11 1.创建 set 集合 对象 ..................................................................................................................11 2.插入 元素 ................................................................................................................................11 3.删除 元素 ................................................................................................................................11 4.查找 元素 ................................................................................................................................11 5.自定 义比 较函 数 ....................................................................................................................11 九、 multiset 多重 集合 容器 .............................................................................................................12 1.创建 multiset 对象 .................................................................................................................12 2.插入 元素 ................................................................................................................................12 3.删除 元素 ................................................................................................................................12 4.查找 元素 ................................................................................................................................12 十、 map 映照 容器 ...........................................................................................................................13 1.创建 map 对象 .......................................................................................................................13 2.删除 元素 ................................................................................................................................13 3.查找 元素 ................................................................................................................................13 4.自定 义比 较函 数 ....................................................................................................................13 十一 、 multimap 多重 映照 容器 ...................................................................................................... 14 1.创建 multimap 对象 .............................................................................................................. 14 2.插入 元素 ................................................................................................................................14 3.删除 元素 (键 值相 同元 素全 部删 除) ............................................................................... 14 4.查找 元素 ................................................................................................................................14 十二 、 string 基本 字符 系列 容器 .....................................................................................................14 1.创建 string 对象 .....................................................................................................................14 2.尾部 添加 字符 ........................................................................................................................14 3.插入 字符 ................................................................................................................................14 4.删除 字符 ................................................................................................................................15 5.替换 字符 ................................................................................................................................15 6.搜索 字串 ................................................................................................................................15 7.字符 串比 较 ............................................................................................................................15 8.string 对象 与数 值相 互转 换 ..................................................................................................15 十三 、 heap 算法 .............................................................................................................................. 16 1.堆的 基本 操作 ........................................................................................................................16 十四 、 next_permutation 算法 ..........................................................................................................16 1.生成 长度为 N的下 K个排 列 ..............................................................................................16 十五 、更 新历 史 ...............................................................................................................................17 2009.02.21(Ver1.1).............................................................................................................. 17 2009.04.26(Ver1.2).............................................................................................................. 17 4 一、vector vector vector vector 向量容器 1.1.1.1.创建创建创建创建vector vector vector vector 对象对象对象对象 (1)不 指定 容器 大小 vector V; (2)指 定容 器大 小 vector V(10); (3)指 定容 器大 小和 初始 值 vector V(10,0); 2.2.2.2.尾部元素扩张尾部元素扩张尾部元素扩张尾部元素扩张 V.push_back(2); 3.3.3.3.插入元素插入元素插入元素插入元素 (1)在 最前 面插 入元 素 V.insert(V.begin(),2); (2)在 第二 个元 素前 插入 元素 V.insert(V.begin()+2,2); (3)在 末尾 插入 元素 V.insert(V.end(),2); 4.4.4.4.删除元素删除元素删除元素删除元素 (1)删 除第 二个 元素 V.erase(V.begin()+2); (2)删 除 [1,5]区间 所有 元素 V.erase(V.begin()+1,V.begin()+5); (3)清 空向 量 V.clear(); 5.5.5.5.向量的大小向量的大小向量的大小向量的大小 (1)向 量大 小 V.size(); (2)向 量是 否为 空 V.empty(); 5 6.6.6.6.用迭代器访问 用迭代器访问 用迭代器访问 用迭代器访问 vector vector vector vector 元素元素元素元素 vector::iterator it; for(it=V.begin();it!=V.end();it++) cout<<*it<<""; 7.7.7.7.使用使用使用使用reverse reverse reverse reverse 反向排列算法反向排列算法反向排列算法反向排列算法 reverse(V.begin(),V.end()); 8.8.8.8.使用使用使用使用sort sort sort sort 排序算法排序算法排序算法排序算法 (1)升 序排 列 sort(V.begin(),V.end()); (2)降 序排 列 bool Comp(const int &A,const int &B) { return A>B; } sort(V.begin(),V.end(),Comp); 二、stack stack stack stack 堆栈容器 1.1.1.1.创建创建创建创建stack stack stack stack 对象对象对象对象 stack S; 2.2.2.2.元素入栈元素入栈元素入栈元素入栈 S.push(2); 3.3.3.3.读取栈顶元素读取栈顶元素读取栈顶元素读取栈顶元素 S.top(); 4.4.4.4.元素出栈元素出栈元素出栈元素出栈 S.pop(); 6 5.5.5.5.堆栈大小堆栈大小堆栈大小堆栈大小 S.size(); 6.6.6.6.堆栈是否为空堆栈是否为空堆栈是否为空堆栈是否为空 S.empty(); 三、queue queue queue queue 队列容器 1.1.1.1.创建创建创建创建queue queue queue queue 对象对象对象对象 queue Q; 2.2.2.2.读取队首元素读取队首元素读取队首元素读取队首元素 Q.front(); 3.3.3.3.读取队尾元素读取队尾元素读取队尾元素读取队尾元素 Q.back(); 4.4.4.4.队列大小队列大小队列大小队列大小 Q.size(); 5555队列是否为空队列是否为空队列是否为空队列是否为空 Q.empty(); 6.6.6.6.元素入队元素入队元素入队元素入队 Q.push(2); 7.7.7.7.元素出队元素出队元素出队元素出队 Q.pop(); 7 四、priority_queue priority_queue priority_queue priority_queue 优先队列容器 1.1.1.1.定义优先队列定义优先队列定义优先队列定义优先队列 priority_queue Q; 2.2.2.2.元素入队元素入队元素入队元素入队 Q.push(2); 3.3.3.3.元素出队元素出队元素出队元素出队 Q.pop(); 4.4.4.4.队列大小队列大小队列大小队列大小 Q.size(); 5.5.5.5.读取队首元素读取队首元素读取队首元素读取队首元素 Q.top(); 6.6.6.6.队列是否为空队列是否为空队列是否为空队列是否为空 Q.empty(); 7.7.7.7.重载重载重载重载"<""<""<""<"操作符定义优先级操作符定义优先级操作符定义优先级操作符定义优先级 struct Info { float Score; string Name; bool operator < (const Info &I) const { //按照 Score由小到大排列 return I.Score Q; 8.8.8.8.重载重载重载重载"()""()""()""()"操作符定义优先级操作符定义优先级操作符定义优先级操作符定义优先级 struct Comp { bool operator ()(const int &A,const int &B) { //由小到大排列 return A>B; } }; priority_queue,Comp> Q; 五、deque deque deque deque 双端队列容器 1.1.1.1.创建创建创建创建deque deque deque deque 对象对象对象对象 (1)不 指定 容器 大小 deque D; (2)指 定容 器大 小 deque D(10); (3)指 定容 器大 小和 初始 值 deque D(10,0); 2.2.2.2.插入元素插入元素插入元素插入元素 (1)从 尾部 插入 元素 ,会 不断 扩张 队列 D.push_back(2); (2)从 头部 插入 元素 ,将 原有 元素 覆盖 D.push_front(2); (3)从 中间 插入 元素 ,将 原有 元素 覆盖 D.insert(D.begin()+1,2); 3.3.3.3.删除元素删除元素删除元素删除元素 (1)从 头部 删除 元素 D.pop_front(); (2)从 尾部 删除 元素 9 D.pop_back(); (3)从 中间 删除 元素 D.erase(D.begin()+1); (4)清空 deque 对象 D.clear(); 4.4.4.4.前向遍历前向遍历前向遍历前向遍历 deque::iterator it; for(it=D.begin();it!=D.end();it++) cout<<*it<<""; 5.5.5.5.反向遍历反向遍历反向遍历反向遍历 deque::reverse_iterator rit; for(rit=D.rbegin();rit!=D.rend();rit++) cout<<*rit<<""; 六、list list list list 双向链表容器 1.1.1.1.创建创建创建创建list list list list 对象对象对象对象 (1)不 指定 容器 大小 list L; (2)指 定容 器大 小 list L(10); 2.2.2.2.插入元素插入元素插入元素插入元素 (1)尾 部插 入元 素, 链表 自动 扩张 L.push_back(2); (2)首 部插 入元 素, 链表 自动 扩张 L.push_front(2); (3)中 间插 入元 素( 在迭 代器 位置 处) , 链表 自动 扩张 list::iterator it; lt=L.begin(); it++; //迭代器只能进行 ++或--操作,不能进行 +n操作 L.insert(it,2); 10 3.3.3.3.删除元素删除元素删除元素删除元素 (1)删 除链 表中 一个 元素 ,值 相同 的元 素都 会被 删除 L.remove(2); (2)删 除链 表首 元素 L.pop_front(); (3)删 除链 表尾 元素 L.pop_back(); (4)删 除迭 代器 位置 上的 元素 list::iterator it; it++; it++; L.erase(it): (5)清 空链 表 L.clear(); 4.4.4.4.元素排序元素排序元素排序元素排序 //升序排 列 L.sort(); 5.5.5.5.剔除连续重复元素剔除连续重复元素剔除连续重复元素剔除连续重复元素 L.unique(); 6.6.6.6.查找元素查找元素查找元素查找元素 list::iterator it; //成功返回元素迭代器位置,失败返回 end()迭代器位置 it=find(L.begin(),L.end(),2); 七、bitset bitset bitset bitset 位集合容器 1.1.1.1.创建创建创建创建bitset bitset bitset bitset 对象对象对象对象 bitset<10> B; 11 2.2.2.2.设置元素值设置元素值设置元素值设置元素值 (1)一 次性 将元 素设 置为 1 B.set(); (2)将 某位 设置为 1 B.set(2,1) (3)将 某位 设置为 0 B.reset(2); 八、set set set set 集合容器 1.1.1.1.创建创建创建创建set set set set 集合对象集合对象集合对象集合对象 set S; 2.2.2.2.插入元素插入元素插入元素插入元素 S.insert(2); 3.3.3.3.删除元素删除元素删除元素删除元素 S.erase(2); 4.4.4.4.查找元素查找元素查找元素查找元素 set::iterator it; //成功返回元素迭代器位置,失败返回 end()迭代器位置 it=S.find(2); 5.5.5.5.自定义比较函数自定义比较函数自定义比较函数自定义比较函数 (1)元 素不 是结 构体 struct Comp { bool operator ()(const int &A,const int &B) { //由大到小的顺序 return A>B; } 12 }; set S; (2)元 素是 结构 体 struct Info { float Score; string Name; bool operator < (const Info &I) const { //按Score由大到小排列 return I.Score S; 九、multiset multiset multiset multiset 多重集合容器 1.1.1.1.创建创建创建创建multiset multiset multiset multiset 对象对象对象对象 multiset S; 2.2.2.2.插入元素插入元素插入元素插入元素 S.insert(2); 3.3.3.3.删除元素删除元素删除元素删除元素 int N; //删除为的所有元素,返回删除元素总数 N=S.erase(2); 4.4.4.4.查找元素查找元素查找元素查找元素 multiset::iterator it; //成功返回第一个重复元素迭代器位置,失败返回 end()迭代器位置 it=S.find(2); 13 十、map map map map 映照容器 1.1.1.1.创建创建创建创建map map map map 对象对象对象对象 map M; 2.2.2.2.删除元素删除元素删除元素删除元素 M.erase(2); 3.3.3.3.查找元素查找元素查找元素查找元素 map::iterator it; //成功返回键值所在迭代器位置,失败返回 end()迭代器位置 it=M.find(2); 4.4.4.4.自定义比较函数自定义比较函数自定义比较函数自定义比较函数 (1)元 素不 是结 构体 struct Comp { bool operator ()(const int &A,const int &B) { //键值由大到小 return A>B; } }; map M; (2)元 素是 结构 体 struct Info { float Score; string Name; bool operator < (const Info &I) const { //按Score由大到小排列 return I.Score M; 十一、multimap multimap multimap multimap 多重映照容器 1.1.1.1.创建创建创建创建multimap multimap multimap multimap 对象对象对象对象 multimap M; 2.2.2.2.插入元素插入元素插入元素插入元素 M.insert(pair(2,'2')); 3.3.3.3.删除元素(键值相同元素全部删除)删除元素(键值相同元素全部删除)删除元素(键值相同元素全部删除)删除元素(键值相同元素全部删除) M.erase(2); 4.4.4.4.查找元素查找元素查找元素查找元素 multimap::iterator it; //成功返回第一个重复键值迭代器位置,失败返回 end()迭代器位置 it=M.find(2); 十二、string string string string 基本字符系列容器 1.1.1.1.创建创建创建创建string string string string 对象对象对象对象 string Str; 2.2.2.2.尾部添加字符尾部添加字符尾部添加字符尾部添加字符 Str+="good"; 3.3.3.3.插入字符插入字符插入字符插入字符 string::iterator it; it=Str.begin(); 15 Str.insert(it+1,'2'); 4.4.4.4.删除字符删除字符删除字符删除字符 (1)删 除第 二个 元素 Str.erase(Str.begin()+2); (2)删 除 [1,5]区间 所有 元素 Str.erase(Str.begin()+1,Str.begin()+5); 5.5.5.5.替换字符替换字符替换字符替换字符 Str.replace(2,4,"good"); 6.6.6.6.搜索字串搜索字串搜索字串搜索字串 //成功返回第一个字符下标,失败返回 4294967295 Str.find("good"); 7.7.7.7.字符串比较字符串比较字符串比较字符串比较 //相等返回, Str大返回, Str小返回 -1 Str.compare("good"); 8.string 8.string 8.string 8.string 对象与数值相互转换对象与数值相互转换对象与数值相互转换对象与数值相互转换 string ConvertToString(double X) { ostringstream O; if(O<>X) 16 return X; return 0.0; } 十三、heap heap heap heap 算法 1.1.1.1.堆的基本操作堆的基本操作堆的基本操作堆的基本操作 struct Point { int F; int Index; bool operator < (const Point &P) const { if(F!=P.F) return P.F>F; //按照 F从大到小排列 else return P.Index
还剩16页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

yzlMichael

贡献于2015-11-11

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf