
C++标准库
asdfghwunai
这个作者很懒,什么都没留下…
展开
-
IO类
IO类型reaifstream和istringstream 继承自istream;ofstream和ostringstream继承自ostream。IO对象无法拷贝和赋值估计这里是禁用了拷贝和赋值函数,不能拷贝的连带作用是不能作为形参和返回值类型。#include <iostream>#include <vector>#include <st...原创 2019-04-05 23:00:45 · 159 阅读 · 0 评论 -
关联容器
分类(1)按map和set分;(2)按是否重复出现分;(3)按是否无序分。定义支持列表初始化map <string,size_t> word_count = {{"0",0}};set<int> exclude = {0, 1};关键字支持的类型(重要)1.定义内部比较函数必须类型定义比较的运算,比如要么是重载<,要么定义成员比较函...原创 2019-04-14 17:04:52 · 152 阅读 · 0 评论 -
动态数组
构建方式1.原始的new,delete方式2.标准库的allocator类最好使用标准库,简单而且不易出现内存管理错误new方式1.[]里不用填常量,只要是整数就行int *p= new int[get_size()];2.返回的类型是指针而不是数组3.初始化方式int *p1 = new int[10]; //默认初始化,内置类型值未定义 int *p...原创 2019-04-17 10:56:36 · 107 阅读 · 0 评论 -
5类迭代器
分类啥叫单遍扫描和多遍扫描?推测多遍扫描就是可以再建些迭代器的副本,来扫描,不影响本身。输入迭代器只读不能写,所以*iter 只能出现在=右边。咋保证呢?不能保存迭代器状态,只能单遍扫描。一个有意思的事问:*it++会导致任何其他的指向流的迭代器失效,啥意思?答:输入迭代器保存不了迭代器的状态。改变副本会影响本身。参考:C++输入迭代器为何只能用...原创 2019-04-13 16:11:15 · 401 阅读 · 1 评论 -
三种不一般的迭代器(插入迭代器,iostream迭代器和反向迭代器)
插入迭代器,iostream迭代器和反向迭代器都是迭代器的补充,是一种迭代器适配器,是一种泛型算法,不属于特定容器。插入迭代器back_interter调用容器的push_back()front_interter调用容器的push_front()inserter调用容器的c.insert(val, it)inserter的一个有意思地方0.先看支持操作1...原创 2019-04-13 12:23:28 · 238 阅读 · 0 评论 -
智能指针
动机帮助程序员自动释放申请的动态内存。智能指针也是模板类shared_ptrmake_shared函数一般通过次函数创建指向的对象,该函数还返回一个智能指针。注意参数一定要和该类型的某个构造函数一致。这样定义的话我感觉以后可以告别new了。shared_ptr<int> p3 = make_shared<int>(42);shared_ptr&l...原创 2019-04-16 22:40:51 · 141 阅读 · 0 评论 -
泛型算法
动机容器定义了自己的成员函数,但是很多操作都是通用的,可以通过一套算法。用于不同类型的容器,多好。#include<algorithm>#include<numeric> //一些数值泛型算法本质通过迭代器访问元素1.算法执行容器的操作,执行的是迭代器的操作,所以不会更改底层的容器的大小,即不会增加或删除元素。2.算法依赖容器元素类型的一些操作,比如...原创 2019-04-08 22:49:14 · 106 阅读 · 0 评论 -
顺序容器
何时迭代器失效如果向容器的插入和删除造成元素移动,迭代器就会失效;如果引起内存重新分配,那么就会全部失效。emplace_back和push_backpush_back调用的是拷贝构造函数,而emplace_back调用的是构造函数。c.emplace_back("1",2,3);c.push_back("1",2,3); //xxx,不支持c.push_back(Sal...原创 2019-04-08 18:34:49 · 100 阅读 · 0 评论 -
顺序容器概述
分类有vector,deque,list,forward_list,array,string。1. 容器构造函数有一个版本只接受一个容器大小参数,其采用的是类型的默认构造函数。如果没有默认构造函数,就得传递一个元素初始化器。vector<noDefault> v1(10,init);vector<noDefault> v2(10); //xxx,无法构造...原创 2019-04-08 16:41:30 · 96 阅读 · 0 评论 -
bind解救普通函数
动机老是用lambda表达式,也不行呀,得让普通函数也能适应一下标准库算法。形式auto newCallable = bind(callable, arg_list); //arg_list是给callable的参数用法普通函数如下,传不进find_if函数。bool check_size(const string &s1, const int &sz)...原创 2019-04-11 13:46:00 · 154 阅读 · 0 评论 -
算法的谓词(引入lambda)
谓词含义指可调用的表达式,作为算法的一个实参传进去。标准库算法用的谓词只有一元谓词(接受一个参数)和二元谓词实例通过定义一个可调用函数,作为参数传入sort函数。#include <iostream>#include <vector>#include <string>#include <fstream>#include ...原创 2019-04-11 12:29:30 · 339 阅读 · 0 评论 -
c++内存分类
静态内存存放局部static对象,类里的static成员,任何函数外定义的变量栈内存局部非static对象堆内存程序员手动分配的内存,发生内存泄露的根源地文字常量区const属性,不可改...原创 2019-04-15 15:58:25 · 152 阅读 · 0 评论