C++ STL
IT1995
每周个人笔记分享,欢迎广大网友查阅!
展开
-
C++笔记-仿函数(functor)
STL6个组建:1. 仿函数;2. 算法;3. 迭代器;4. 空间配置器;5. 容器;6. 适配器;仿函数一般不会单独使用,主要是为了搭配STL算法。函数指针不能满足STL对抽象性的要求,不能满足软件积木的要求,无法和STL其他组建搭配;本质就是类重载了一个operator(),创建一个行为类似函数的对象。如下C++容器排序的过程。程序运行截图都这样:C++排序过程#include <iostream>#include <a.原创 2021-02-18 14:49:54 · 1072 阅读 · 2 评论 -
C++工作笔记-map有自动排序的功能
实验如下:代码如下:#include <map>#include <string>#include <iostream>#include <time.h>using namespace std;int main(){ //学生信息映射分数 srand((unsigned)time(NULL)); map<int, str...原创 2018-04-16 18:43:52 · 9539 阅读 · 1 评论 -
Qt工作笔记-QList (链表) & QVector (数组)【转载】
原文地址:https://blog.csdn.net/qq_33266987/article/details/53333373C++中的list 和 vector(1)、stl提供了三个最基本的容器:vector,list,deque。vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即 []操作符,但由于它的内存空间是连续的,所以在...原创 2018-04-11 11:18:33 · 12150 阅读 · 1 评论 -
C++工作笔记-map中结构体的比较
原理,重载小于符号。运行截图如下:代码如下://map的重载、排序#include <map>#include <string>#include <iostream>#include <time.h>using namespace std;typedef struct tagStudentInfo{ int nID; string...原创 2018-04-16 21:15:14 · 4704 阅读 · 0 评论 -
C++ STL list删除和修改
代码如下:#define _SCL_SECURE_NO_WARNINGS#include <iostream>#include <algorithm>#include <list>using namespace std;struct Node{ int a; char c; //如果c是0的化,控制台显示不了(ASCII 0 ) Nod...原创 2018-03-28 20:42:03 · 12289 阅读 · 4 评论 -
C++工作笔记-模版中class更新为typename
今天看到某大佬教的C++模版代码,发现这些大佬在模版里面都不再使用class而使用typename,为了向大佬们看齐现在做如下笔记!代码如下:#include <iostream>using namespace std;template<typename T>T add(T a, T b){ return a + b;}template<class T...原创 2018-05-13 16:37:20 · 4155 阅读 · 1 评论 -
C++工作笔记-作用域(" :: ")的另一种玩法
当有要写的函数与STL里面重名时,如果不加作用域的话会报如下错误。先说明下代码:template<typename T>void swap(T &a, T &b){ cout << "调用了自己写的" << endl; T c = a; a = b; b = c;}void main(){ int a = 1, b = 2; ...原创 2018-05-13 16:58:56 · 4222 阅读 · 1 评论 -
C++工作笔记-模版类要注意的地方(对比模版函数)
指定了模版参数类型后,在编译的时候就会生成一个新的具体的类,然后用这个类构造对象。用<>来指定模版的类型而函数模版就不是这样,他先调用函数,发现是什么类型再推到,而类是必须要指定的所有模版类必须要指定类型,而函数则不用。代码如下:#include <iostream>using namespace std;template<typename T>clas...原创 2018-05-13 18:34:27 · 4174 阅读 · 1 评论 -
Qt|C++工作笔记-QVector与Vector去重复的值
Qt中没有unique函数,只能用遍历的方法了,代码如下:#include <QApplication>#include <QDebug>#include <QString>#include <QVector>int main(int argc, char *argv[]){ QApplication a(argc, arg...原创 2018-08-14 15:33:45 · 10226 阅读 · 3 评论 -
C++|STL学习笔记-map的属性(大小以及是否存在)
目录1.size()的用法2.多多使用count(xxx)进行判断 1.size()的用法map的propertymap属性1.没有容量;2.得到元素的个数size() 这里给出调用他size()的例子,源码如下:/***********************************************************************...原创 2018-11-16 09:09:43 · 26509 阅读 · 3 评论 -
C++|STL学习笔记-对STL中关联容器map的进一步认识
关联容器mapkey + value 的值关联容器 = 有序容器(红黑树) + 无序容器(散列表) + hash_map有序容器中:map的键值是不允许重复的multimap的键值是允许重复的set是一个集合,键值=实值,就是只包含一个值,既是键值也是实值,不允许重复multiset运行重复map底层就是红黑树(平衡排序二叉树)键值保存,高效访问插入效率低于链表,因为...原创 2018-11-15 09:05:59 · 4092 阅读 · 0 评论 -
STL学习笔记-multimap的基本使用
multimap:操作函数跟map都一样区别:1.允许键值重复;2.计数 count()3.find函数返回第一个匹配的元素,没找到返回最后一个 如下例子:运行截图如下:源码如下:#include <map>#include <iostream>using namespace std;int main(){ mult...原创 2018-11-25 18:51:38 · 4227 阅读 · 0 评论 -
STL学习笔记-set的基本原理以及插入、遍历
set关键字保存:通过实值来排序,再通过实值来查找;特点:高效访问,与map一样,底层都是红黑树,map是分键值对的,set键值即实值,实值即键值;set的键值不能重复。红黑树:平衡排序二叉树 如下例子,运行截图如下:源码如下:#include <set>#include <iostream>#include <string>...原创 2018-11-28 09:06:30 · 7548 阅读 · 2 评论 -
STL|QTL工作笔记-QString与std::string寻找子串的区别与联系
目录 STL中的stringQTL中的QString总结 STL中的string在STL中,是采用这个逻辑进行的:1.设置一个标志接收find的返回值;2.当标志为XXX时,则为找到,否则为不找到;例子如下:#include <string>#include <iostream>using namespace std;v...原创 2018-12-05 17:14:32 · 5448 阅读 · 3 评论 -
STL工作笔记-map中关于erase返回值的操作
目录 原理举个栗子 原理这里要注意的是erase的返回值,这个返回值是下一个结点!!!这里可以直接用原始的it去接就可以了,不用在++啥的。 举个栗子如下代码:#include <string>#include <iostream>#include <map>#include <algorithm&...原创 2018-12-05 18:30:34 · 9729 阅读 · 5 评论 -
C++工作笔记-stl中map基础用法(插入,遍历,删除)
在最近一直在阅读xx项目,看到里面用到了map,读大学期间基本上从来没用到过这种stl(大学就用了Vector和list)。下面对map敲如下代码:运行截图如下:代码如下:#include <map>#include <string>#include <iostream>using namespace std;int main(){ map<i...原创 2018-04-16 17:25:12 · 4724 阅读 · 0 评论 -
C++ STL list输出和增加
源码如下:#define _SCL_SECURE_NO_WARNINGS#include <iostream>#include <algorithm>#include <list>using namespace std;struct Node{ int a; char c; //如果c是0的化,控制台显示不了(ASCII 0 ) Nod...原创 2018-03-27 23:34:47 · 10401 阅读 · 1 评论 -
C++ STL list的大小
代码如下:#define _SCL_SECURE_NO_WARNINGS#include <iostream>#include <algorithm>#include <list>using namespace std;struct Node{ int a; char c; //如果c是0的化,控制台显示不了(ASCII 0 )};v...原创 2018-03-26 23:55:15 · 15956 阅读 · 0 评论 -
C++ STL string迭代器的使用
代码如下:#define _SCL_SECURE_NO_WARNINGS#include <iostream>#include <string> //要与c语言里面的#include <string.h>区分using namespace std;int main(){ string str("abcdefg"); string::itera...原创 2018-03-23 00:10:46 · 20767 阅读 · 2 评论 -
C++ STL string与算法
代码如下:#define _SCL_SECURE_NO_WARNINGS#include <iostream>#include <string> //要与c语言里面的#include <string.h>区分#include <algorithm>#include <functional>using namespace s...原创 2018-03-23 21:44:31 · 4524 阅读 · 1 评论 -
C++ STL vector的构造
代码如下:#define _SCL_SECURE_NO_WARNINGS#include <vector>#include <iostream>#include <algorithm> using namespace std;int main(){ vector<int> vec(5); for (int i = 0; i ...原创 2018-03-23 22:24:26 · 4985 阅读 · 1 评论 -
C++ STL list排序
代码如下:#define _SCL_SECURE_NO_WARNINGS#include <iostream>#include <algorithm>#include <list>using namespace std;struct Node{ int a; char c; //如果c是0的化,控制台显示不了(ASCII 0 ) Nod...原创 2018-03-29 22:29:59 · 14824 阅读 · 1 评论 -
C++ STL vector的容量
关于vector的容量:vs:如果容量不够时,增加现有容量的一半(向下取增);vc6.0:如果容量不够时,增加现有容量的一倍;关于vector的大小:size()为vector中元素的个数,和容量要区别开。代码如下:#define _SCL_SECURE_NO_WARNINGS#include <vector> #include <iostream>#includ...原创 2018-03-24 21:26:05 · 5132 阅读 · 4 评论 -
C++ STL vector的输出
代码如下:#define _SCL_SECURE_NO_WARNINGS#include <vector> #include <iostream>#include <algorithm>#include <windows.h>using namespace std;void fun(int i){ cout << i;...原创 2018-03-24 22:06:14 · 32371 阅读 · 5 评论 -
C++ STL vector的操作
代码如下:#define _SCL_SECURE_NO_WARNINGS#include <vector> #include <iostream>#include <functional>#include <algorithm>#include <windows.h>using namespace std;void f...原创 2018-03-24 22:38:30 · 4374 阅读 · 4 评论 -
C++ STL string的构造函数
首先是弄清下面的概念(下面这段是转载的):<string.h><string.h>是C版本的头文件,包含比如strcpy、strcat之类的字符串处理函数。<cstring>在C++标准化(1998年)过程中,为了兼容以前,标准化组织将所有这些文件都进行了新的定义,加入到了标准库中,加入后的文件名就新增了一个"c"前缀并且去掉了.h的后缀名,所以string.h...原创 2018-03-20 23:08:13 · 18745 阅读 · 3 评论 -
C++ STL 乱序算法
本次要注意:time.h与ctime本质一样,ctime是c++风格(标准),time.h是c语言风格。同理:如stdio.h和cstdio代码如下:#define _SCL_SECURE_NO_WARNINGS#include <vector> #include <iostream>#include <functional>#include <...原创 2018-03-25 13:24:56 · 5937 阅读 · 1 评论 -
C++ STL list构造
list:本质双向链表(更灵活)forward_list:单向链表,操作都在表头(头插法和头删法)(所以是forward),C++11支持,vs2012以上版本代码如下:#define _SCL_SECURE_NO_WARNINGS#include <iostream>#include <algorithm>#include <list>using...原创 2018-03-25 14:00:57 · 4761 阅读 · 1 评论 -
C++ STL string的属性
首先:IDE为VS时:string初始化为15个字节,当不够时,每次增加16个字节;IDE为VC6.0时:string初始化为31个字节,当不够时,每次增加32个字节;下面是代码部分:#include <iostream>#include <string> //要与c语言里面的#include <string.h>区分using namespace std;...原创 2018-03-21 23:23:18 · 4634 阅读 · 3 评论 -
C++ STL string的输出
代码如下:#include <iostream>#include <string> //要与c语言里面的#include <string.h>区分using namespace std;int main(){ string str("abcdefg"); cout << str << endl; cout <&l原创 2018-03-21 23:38:20 · 10994 阅读 · 6 评论 -
C++ STL string修改
代码如下:#include <iostream>#include <string> //要与c语言里面的#include <string.h>区分using namespace std;int main(){ string str("abcdefg"); str[2] = 'Z'; cout << str << endl;...原创 2018-03-21 23:50:10 · 5784 阅读 · 6 评论 -
C++ STL deque创建
deque(双端队列):每次申请512byte的空间,不够再申请,然后用指针连接。没有capacity和reserve代码如下:#include <deque>#include <iostream>using namespace std;int main(){ deque<int> de; de.push_front(12); deque<...原创 2018-04-01 10:40:28 · 4387 阅读 · 2 评论 -
C++ STL stirng的复制&比较
代码如下:#define _SCL_SECURE_NO_WARNINGS#include <iostream>#include <string> //要与c语言里面的#include <string.h>区分using namespace std;int main(){ string str1("abcdefg"); string str2(...原创 2018-03-22 21:34:30 · 4486 阅读 · 5 评论