随笔- 117
文章- 0
评论- 1
阅读-
50052
02 2019 档案
boost的初步了解
摘要:本章介绍了 Boost C++ 库 Asio,它是异步输入输出的核心。 名字本身就说明了一切:Asio 意即异步输入/输出。 该库可以让 C++ 异步地处理数据,且平台独立。 异步数据处理就是指,任务触发后不需要等待它们完成。 相反,Boost.Asio 会在任务完成时触发一个应用。 异步任务的主要
阅读全文
regex_replace
摘要:Regex_iterator方法需要输入一个正则表达式,以及一个用于替换匹配的字符串的格式化字符串;这个格式化的字符串可以通过表的转义序列引用匹配子字符串的部分内容; 转义序列 $n 替换第n个捕获的字符串,$1表示第一个捕获组,$2表示第二个捕获组 $& 匹配整个正则表达式的字符串,等于$0 $’
阅读全文
regex_iterator
摘要:绝对不能在循环中通过regex_search获取模式在源字符串所有的实例;应该改为regex_iterator或则regex_token_iterator,一般情况下需要位一个特定的容器来指定一个尾迭代器,但是在std::regex_iterator 里边直接调用构造函数就会生成一个尾迭代器;例如:
阅读全文
regex_search
摘要:在regex_match()里边只能看到regex和输入的字符串是不是全部匹配上了,匹配上了就返回true,否则false。然而他不能返回匹配到的子字符串;regex_search()和regex_match()参数类型是一样的;返回的也是bool类型;但是它还可以查找到匹配的子字符串;将捕捉到的结
阅读全文
regex_match
摘要:原型:bool regex_match(InputSequence[,MatchResults] , Regex[ , Flags]); 当模式匹配整个输入序列成功时,返回的是true,否则返回false; 参数说明: 1.InputSequence可以是:源字符串的首位迭代器,也可以是字符串; 2
阅读全文
正则表达式详解<一>
摘要:正则表达式是一种处理字符串的微型语言;有以下的基本术语: l 模式(pattern):正则表达式实际上是通过字符串表达的一个模式 l 匹配(match): 判断正则表达式和给出的序列[first , last),是否全部匹配 l 搜索(search):判断在给定的序列里是否存在和正则表达式匹配的子字
阅读全文
multimap详讲
摘要:multimap和map的区别: 首先认识一下multimap和map的区别: 1> multimap不提供operator[ ]运算符。因为这个运算符的语义在同一个键可以保存多个值的容器multimap里是无意义的。 2> multimap插入元素的时候总是能成功的。所以插入insert()方法只
阅读全文
map详讲<二>
摘要:查找元素: Map可以根据健来查找元素,提供方法find(key),如果是这个健对应的元素存在,则返回的是这个健的迭代器iterator,否则返回的是std::end(); 使用find()函数有点笨拙,但是还是必须的有时候,如果是只想知道有木有这个健对应的元素,则可以使用count(key),因为
阅读全文
map详解<一>
摘要:首先了解下pair工具类: 这个类在头文件<utility>,功能:将俩个类型可能不一样的值组合在一起。,通过first和second来访问这两个值。还定义了operator == 和operator <用来比较两个值; 看实例: 结果是: myPair > myOtherPairmyOtherPa
阅读全文
priority_queue详解
摘要:priority_queue是一个安排好的顺序存储的队列,队首是优先级最高的元素。 Template<class T , class Container = vector<T> , class compare = less<T>> 第一个参数是priority_queue保存的元素类型T,Conta
阅读全文
容器适配器(一):queue
摘要:除了标准的顺序容器外,STL还提供了3种容器适配器,queue,priority_queue和stack 适配器是对顺序容器的包装,它的作用是简化接口. queue接口十分的简单,只有8个方法。再加上构造函数和比较运算符,push()和emplace() 在queue末尾添加元素。Pop()从头部移
阅读全文
array详解
摘要:array和vector大致是相同的,区别在于array的大小是固定的。不能增加和缩小。另外array的swap()函数和vector的swap()函数在算法复杂度上是有区别的,array.swap()函数是线性时间复杂度,vector,swap()是常量时间复杂度。在定义array的时候需要两个参
阅读全文
forward_list详解
摘要:forward_list在头文件<forward_list>中,与list类似,区别就是list时双链表,forward_list是单链表,forward_list只支持前向迭代。在访问第一个元素的时候用的是 before_begin(),这个方法返回的是第一个元素的前一个元素,也就是虚设的元素,不
阅读全文
deque详解
摘要:deque是double-ended queue的简称,deque和vector几乎上是一样的,使用的非常少,定义在<deque>头文件里; deque和vector的区别在于: 1)deque支持在首位两端的常量时间插入和删除元素,而vector只支持在末尾插入删除元素(摊还常量时间) 2)deq
阅读全文
vector详讲(三)实例
摘要:移动语义: push语句有时候会通过移动语义来提高性能 这样做的后果就是再也不能调用myEle了, 在push_back(const T&& val );这样的定义,可以这样: 在C++中emplace的意思就是 "放置到位"的意思。std::vector的方法有emplace_back();这个方
阅读全文
vector详讲(二)迭代器
摘要:先看一下代码: 每一个容器都定义了一个名为 iterator 的类型,来表示这个容器的迭代器,其中std::begin()返回的是容器中第一个元素的迭代器 这条语句是检查是否超过了这个容器的尾部序列(也就是检查是否越界); 我们要养成一个好习惯,那就是采用前置递增,而不是后置递增,因为前置递增返回的
阅读全文
vector详讲(一)
摘要:<vector>头文件里带有两个类型参数的类模板,第一个参数是需要指定的数据类型,第二个是分配器(allocator)类型 template<class T, class Allocator = allocator<T>> class vector; 用分配器来为元素分配内存和释放内存。需要注意的是
阅读全文
numeric_limits<>函数
摘要:因为比较有用,所以自己试验并且翻译了一下,很可能有错误,希望发现错误的朋友能给我留言纠正,谢谢! 有部分没有翻译,因为还没弄清楚到底什么作用 numeric_limits是模板类。 需要注意的是返回值和参数,可以用强制转换。测试类的函数返回1代表“是”,0代表“否”。 例如cout << " The
阅读全文
seek()和tell()在文件里转移
摘要:Seek()方法允许在输入和输出流移动到任意的位置,seek()有好几种形式。包含:seekp() 方法和seekg()方法,p是put的意思,g是get的意思;其中输入流里用seekg()函数,输出流里用seekp()函数; Seekp()和seekg()有两个重载,第一个是:接受一个参数,接受一
阅读全文
文件流
摘要:在C++中ofstream和istream提供了文件的输出和输入;这两个文件在头文件<fstream>定义 输出文件流和其他输出流不一样的一点就是:输出文件流的构造函数接受两个参数,第一个是文件名,第二个就是打开文件的模式,默认的模式是写文件(ios_base::out)这个模式从文件的开头写文件,
阅读全文
istringstream和ostringstream的实现
摘要:ostringstream是将数据写入string里边的,istringstream是将从string里边读出数据的; 输入: a bc d ef done 结果是: a bc d ef
阅读全文
处理错误输入
摘要:输入流提供了一些方法检测异常情况,大部分和输入流有关的错误推条件都发生在无数据可读时,例如:可能达到了流尾(文件尾),应该养成读取数据后就检查流状态的习惯,这样就可以从异常中输入中恢复; 下面这个例子需要用户输入一个特殊字符来结束文件的输入:windows输入Control+Z, Linux输入Co
阅读全文
有一个双重模板化的错误实现
摘要:在GameBoard.h文件里: 在GameBoard.cpp文件里: 在main()函数体内: 会报错这是为什么! 错误是: required from 'GameBoard<T>& GameBoard<T>::operator=(const GameBoard<E>&) [with E = in
阅读全文
非类型模板参数
摘要:非类型的参数是“普通的”参数,eg:指针,int,然而非类型的模板参数只能是整数类型(int , char , long long int ...),和枚举类型,引用和指针 在头文件里: 在源文件里: 在main函数里: 可以看出不能通过非常量的整数来指定高度和宽度,但是可以通过const,cons
阅读全文
C++模板
摘要:在GameBoard,h文件: 在GameBoard.cpp文件里: 在main函数里: 其意思就是在mCells里插入数据0~99;并且打印出来; 1>不仅仅可以实例化int型的,还可以实例化double,char,int*,char*等等; 如果想将GameBoard对象作为参数,则这样声明:
阅读全文
初始化列表initializer_list
摘要:初始化列表定义在<initializer_list>,初始化列表简化了参数数量可变的函数的编写,初始化列表的所有的元素都应该是同一种数据类型 由于定义了列表中允许的类型,所以初始化列表是安全的; 结构是: makeSum({1,3,4,5,6,9}) : 28 但是在main函数内这么写就是错误的
阅读全文
C++类型转换
摘要:C++提供了四种类型转换,static_cast , dynamic_cast , const_cast , reinterpret_cast .而在C语言里有(),这种C风格的转换在C++里同样适用,但是强烈建议使用C++这四种转换。因为他们更安全,在语法上更优秀。 他是这四种里唯一可以舍弃常量特
阅读全文
const引用和constexpr
摘要:1.const指针 eg: (1) int const * p = nullptr; p = new int[10]; p[3] = 4; //error 我们发现第三行没法编译,这是因为第一行的const限制的时int,意思就是无法改变p所指的int类型的值。 (2) int * const p
阅读全文
引用详解
摘要:专业的C++代码会用到大量的引用,在C++中引用是变量的别名,所有对引用的修改都会改变被引用变量的值,可以将引用当作隐私指针,这个指针没有取变量地址和解除引用的麻烦(也可以将引用当作是原始变量的别名)。 一. 引用变量 1.引用变量在创建的时候必须初始化 值得注意的是:不能对创建引用直接“值传递”,
阅读全文
重写不受限制
摘要:虚函数不仅可以定义在public,而且可以声明在protected和private里边 而在派生类里边可以定义在任何限定里边,不一定和父类的限制符相同,比如:父类的在private里,但是子类可以定义在public里
阅读全文