09 2018 档案

摘要:标准库,智能指针,综合运用的小例子 功能说明:查询单词在文件中出现的次数,如果在同一行出现多次,只算一次。 比如查询单词:你好 输出的结果: 你好 出现了:2次 (行号 2)xxxxxxx 你好 (行号 3)bbb ccc 你好 xxxxx 注意点:代码的46行,必须使用引用。 代码: c++ in 阅读全文
posted @ 2018-09-30 11:00 小石王 阅读(1597) 评论(0) 推荐(0) 编辑
摘要:allocator 使用 作用:只开辟空间,不调用构造函数 操作一览表 | | | | | | | allocator\ a | 定义一个名为a的allocator对象,它可以为类型为T的对象分配内存 | | a.allocate(n) | 分配一段连续的为构造的内,能容纳n个类型为T的对象 | | 阅读全文
posted @ 2018-09-29 21:41 小石王 阅读(1270) 评论(0) 推荐(0) 编辑
摘要:数组的智能指针 使用 数组的智能指针的限制: 1,unique_ptr的数组智能指针,没有 和 操作,但支持下标操作[] 2,shared_ptr的数组智能指针,有 和 操作,但不支持下标操作[],只能通过get()去访问数组的元素。 3,shared_ptr的数组智能指针,必须要自定义delete 阅读全文
posted @ 2018-09-29 20:15 小石王 阅读(5447) 评论(0) 推荐(1) 编辑
摘要:智能指针 weak_ptr 使用 weak_ptr用途: 1,解决空悬指针问题 2,解决循环引用问题 weak_ptr特点:没有 操作和 操作 weak_ptr是不控制所指对象生存周期的智能指针,它指向由一个shared_ptr管理的对象。将一个weak_ptr绑定到一个shared_ptr不会改变 阅读全文
posted @ 2018-09-29 08:06 小石王 阅读(2670) 评论(0) 推荐(0) 编辑
摘要:在ubuntu18.04上安装EOS 在ubuntu18.04上安装EOS的目的: 把交易所的eos转到eos主网,防止交易所跑路或者交易所被黑客攻击 "在不联网的安全环境下,用eos官方的命令行工具,创建自己的公钥和私钥" "用eos官方的命令行工具,创建钱包,执行转账,购买RAM等" 本笔记包括 阅读全文
posted @ 2018-09-28 22:44 小石王 阅读(2181) 评论(0) 推荐(0) 编辑
摘要:智能指针 unique_ptr 使用 和shared_ptr不同,可以有多个shared_ptr指向同一个内存,只能有1个unique_ptr指向某个内存。因此unique_ptr不支持普通的拷贝和赋值。 一,先来个表格,唠唠unique_ptr | 操作 | 功能描述 | | | | | uniq 阅读全文
posted @ 2018-09-28 08:24 小石王 阅读(1595) 评论(0) 推荐(0) 编辑
摘要:智能指针 shared_ptr 和 new结合使用 用make_shared函数初始化shared_ptr是最推荐的,但有的时候还是需要用new关键字来初始化shared_ptr。 一,先来个表格,唠唠new和shared_ptr | 操作 | 功能描述 | | | | | shared_ptr\ 阅读全文
posted @ 2018-09-28 07:26 小石王 阅读(2681) 评论(0) 推荐(0) 编辑
摘要:智能指针 shared_ptr 使用 上一篇 "智能指针是啥玩意" ,介绍了什么是智能指针。 这一篇简单说说如何使用智能指针。 一,智能指针分3类:今天只唠唠shared_ptr shared_ptr unique_ptr weak_ptr 二,下表是shared_ptr和unique_ptr都支持 阅读全文
posted @ 2018-09-27 08:31 小石王 阅读(2545) 评论(1) 推荐(0) 编辑
摘要:标准库 智能指针( smart pointer ) 是啥玩意儿 一,为什么有智能指针??? c++程序员需要自己善后自己动态开辟的内存,一旦忘了释放,内存就泄露。 智能指针可以帮助程序员 "自动释放" 自己开辟的内存。 二,从哪里看出来智能了??? 上面的代码把p交给智能指针auto_ptr管理后, 阅读全文
posted @ 2018-09-26 08:59 小石王 阅读(1226) 评论(1) 推荐(0) 编辑
摘要:标准库 map multimap元素访问 一,map,unordered_map下标操作 | 下标操作种类 | 功能描述 | | | | | c[k] | 返回关键字为k的元素;如果k不在c中,添加一个关键字为k的元素,并对其初始化 | | c.at(k) | 访问关键字为k的元素;若k不在c中,抛 阅读全文
posted @ 2018-09-25 22:22 小石王 阅读(1610) 评论(0) 推荐(0) 编辑
摘要:标准库 map set 删除 删除操作 有map如下: 删除方法: | 删除操作种类 | 功能描述 | | | | | cnt.erase(3); | 删除key为3的元素,并返回删除的元素的个数 | | cnt.erase(p); | p为迭代器,删除p指向的元素,并返回p之后元素的迭代器 | | 阅读全文
posted @ 2018-09-25 08:41 小石王 阅读(1691) 评论(0) 推荐(0) 编辑
摘要:标准库 map set 插入 一,插入操作 有map如下: 插入方法: | 插入操作种类 | 功能描述 | | | | | cnt.insert({"abc", 12}); | 直接用大括号 | | cnt.insert(make_pari("abc", 22)); | 用make_pair函数,返 阅读全文
posted @ 2018-09-23 09:57 小石王 阅读(1079) 评论(0) 推荐(0) 编辑
摘要:标准库 map set 大锅炖 一,关联容器有哪些 | 按关键字有序保存元素 | | | | | | map | 保存key和value | | set | 只保存key | | mulutimap | key可以重复出现 | | multiset | key可以重复出现 | | 无序集合 | | 阅读全文
posted @ 2018-09-22 23:10 小石王 阅读(419) 评论(0) 推荐(1) 编辑
摘要:标准库 pair 介绍 问题:map里的元素由key和value组成,这个key和value的组合是什么类型呢??? 答案:pair类型 pair介绍: 它是模板 有2个公有成员可供访问。 first和second。 make_pair函数能返回一个pair 可以进行 ==,!=,, =运算 小例子 阅读全文
posted @ 2018-09-22 13:22 小石王 阅读(2709) 评论(0) 推荐(0) 编辑
摘要:标准库 set 自定义关键字类型与比较函数 问题:哪些类型可以作为标准库set的关键字类型呢??? 答案: 1,任意类型,但是需要额外提供能够比较这种类型的比较函数。 2,这种类型实现了 类型,注意是类型,不是变量 方式1:使用decltype,注意后面必须有 方式2:直接使用函数指针 代码块索引: 阅读全文
posted @ 2018-09-22 11:20 小石王 阅读(2956) 评论(0) 推荐(0) 编辑
摘要:标准库 插入迭代器 详解 插入迭代器作用:copy等函数不能改变容器的大小,所以有时copy先容器是个空的容器,如果不使用插入迭代器,是无法使用copy等函数的。 例如下面的代码就是错误的: lst2是个空的容器,copy函数不能扩容容器lst2,所以会发生运行时错误。 用插入迭代器就可以很好的解决 阅读全文
posted @ 2018-09-21 07:03 小石王 阅读(651) 评论(0) 推荐(0) 编辑
摘要:标准库 bind 函数 详解 bind函数:接收一个函数名作为参数,生成一个新的函数。 arg_list中的参数可能包含入_1, _2等,这些是新函数newCallable的参数。 在这篇博客 "lambda 表达式 介绍" 中,讨论了find_if的第三个参数的问题,当时是用lambda表达式解决 阅读全文
posted @ 2018-09-20 08:46 小石王 阅读(4900) 评论(0) 推荐(0) 编辑
摘要:lambda 表达式 剖析 大前提:捕获列表里变量的确定时机。 捕获列表和参数列表有区别,捕获列表里的变量,是在捕获的时间点就确定了,而不是在lambda调用时确定,参数列表是在调用时才确定。所以当捕获了一个int i,i=12,然后在lambda后面的代码又改变i为22,但是当调用lambda的时 阅读全文
posted @ 2018-09-19 08:34 小石王 阅读(1735) 评论(0) 推荐(0) 编辑
摘要:lambda 表达式 介绍 问题:假设有个需求是,在vector\找出所有长度大于等于4的元素。标准库find_if函数的第三参数是函数指针,但是这个函数指针指向的函数只能接受一个参数,这个参数是vector\里的元素。这时问题就来了,长度4无法作为参数传递, 肿么办??? 解决办法:使用lambd 阅读全文
posted @ 2018-09-18 08:37 小石王 阅读(3403) 评论(0) 推荐(0) 编辑
摘要:通用的(泛型)算法 之 只读算法,写算法,排序算法 只读算法: | 函数名 | 功能描述 | | | | | accumulate | 求容器里元素的和 | | equal | 比较2个容器里的元素 | 写算法 | 函数名 | 功能描述 | | | | | fill | 用给定值,覆盖给定的范围的元 阅读全文
posted @ 2018-09-17 22:27 小石王 阅读(456) 评论(0) 推荐(0) 编辑
摘要:通用的(泛型)算法 generic algorithm 总览 特性: 1,标准库的顺序容器定义了很少的操作,比如添加,删除等。 2,问题:其实还有很多操作,比如排序,查找特定的元素,替换或删除一个特定值等,但是标准库并未给每个容器都定义成员函数来实现这些操作。 3,解决办法:因为算法是相同的逻辑,只 阅读全文
posted @ 2018-09-17 08:16 小石王 阅读(918) 评论(0) 推荐(0) 编辑
摘要:c/c++ 标准容器 vector的内存空间是如何自动增长的 vector,string,deque的内存存储机制:在一个连续的内存空间存储,所以才支持下标操作。 vector的课题:由于容器的大小是可变的,当插入元素后,vector必须分配新的内存来保存已有元素和新的元素,将已有元素从旧的内存地址 阅读全文
posted @ 2018-09-14 08:35 小石王 阅读(1805) 评论(1) 推荐(1) 编辑
摘要:c/c++ 标准容器 forward_list, resize, 重新定位迭代器 1,forward_list特有的方法: + insert_after + emplace_after + erase_after 2,容器的插入删除操作后的注意事项 + 必须保证每次改变容器的操作后都正确地重新定位迭 阅读全文
posted @ 2018-09-13 23:35 小石王 阅读(721) 评论(0) 推荐(0) 编辑
摘要:c/c++ 标准顺序容器 容器的访问,删除 操作 pop_front:vector,string不支持 pop_back:forward_list不支持 知识点 1,front, back, at 成员函数的使用,对应代码里的test1 2,删除最后一个元素pop_back, 删除第一个元素pop_ 阅读全文
posted @ 2018-09-13 23:00 小石王 阅读(820) 评论(0) 推荐(0) 编辑
摘要:c/c++ 标准顺序容器 之 push_back,push_front,insert,emplace 操作 关键概念:向容器添加元素时,添加的是元素的拷贝,而不是对象本身。随后对容器中元素的任何改变都不会影响到原始对象,反之亦然。 关键警告:因为vector,deque,string的内存存储都是在 阅读全文
posted @ 2018-09-13 22:01 小石王 阅读(2091) 评论(0) 推荐(0) 编辑
摘要:c/c++ 标准容器 之 初始化, 赋值, swap, 比较 知识点 1,容器的初始化,对应代码里的test1 2,标准库array的初始化,对应代码里的test2 3,容器的赋值 ,对应代码里的test3 4,容器的swap,对应代码里的test4 5,容器的比较(==,!=, , =, incl 阅读全文
posted @ 2018-09-13 06:25 小石王 阅读(1783) 评论(0) 推荐(0) 编辑
摘要:c/c++ 多维数组和指针 知识点 1,初始化多维数组,对应代码里的test1 2,遍历多维数组,除了最内层循环外,其他所有层都必须是引用类型,对应代码里的test2 3,指针和多维数组 ,对应代码里的test3 c++ include using namespace std; int main() 阅读全文
posted @ 2018-09-12 07:23 小石王 阅读(894) 评论(0) 推荐(0) 编辑
摘要:c/c++ 数组和指针 知识点 1,数组就是指针,对应代码里的test1 2,用auto声明,得到的是指针,对应代码里的test2 3,用decltype声明,得到的不是指针 ,对应代码里的test3 4,用指针模拟end ,对应代码里的test4 5,标准库函数std::begin,std::en 阅读全文
posted @ 2018-09-12 06:09 小石王 阅读(364) 评论(0) 推荐(1) 编辑
摘要:c/c++ 数组 知识点 1,数组的声明和初始化,对应代码里的test1和test2 2,char数组,对应代码里的test3 3,数组不可以拷贝和复制,对应代码里的test4 4,指针数组, 数组的指针, 数组的引用,指针数组的引用,对应代码里的test5 5,数组的范围for用法,对应代码里的t 阅读全文
posted @ 2018-09-11 08:39 小石王 阅读(2399) 评论(0) 推荐(0) 编辑
摘要:c/c++ 标准库 迭代器 begin和end运算符返回的具体类型由对象是否是常量决定,如果对象是常量,begin和end返回const_iterator;如果对象不是常量,返回iteraotor 1,但凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素。 2,不能在范围for循环中向vec 阅读全文
posted @ 2018-09-10 22:25 小石王 阅读(1933) 评论(0) 推荐(0) 编辑
摘要:c/c++ 标准库 vector 标准库 vector的小例子 test1~test7 c++ include include using namespace std; class A{ public: A(){cout v1; vector v2; / //test2 / vector v3(2) 阅读全文
posted @ 2018-09-07 08:44 小石王 阅读(1725) 评论(0) 推荐(0) 编辑
摘要:c/c++ 标准库 string 标准库 string的小例子 test1~test10 c++ include using namespace std; int main(void){ //test1 //string s1,s2; //cin s1 s2; //cout wd){ // cout 阅读全文
posted @ 2018-09-06 23:06 小石王 阅读(595) 评论(0) 推荐(0) 编辑
摘要:c/c++ 模板与STL小例子系列 traits 对这个概念,还是处于懵逼的状态,初步体会就是,为了解决类型之间的转换问题。 从一个类型为A的指针,转化到类型为B的指针,中间需要用void 来作为中介。traits好像可以解决这种问题。 通过traits技术,可以达到扔进去什么类型,给我吐出什么类型 阅读全文
posted @ 2018-09-05 20:47 小石王 阅读(675) 评论(0) 推荐(0) 编辑
摘要:c++ move关键字 move的由来:在 c++11 以前存在一个有趣的现象:T& 指向 lvalue (左传引用), const T& 既可以指向 lvalue 也可以指向 rvalue。但却没有一种引用类型,可以限制为只指向 rvalue。 就这么简单!你甚至可以暂时想像它的原型是这样的(当然 阅读全文
posted @ 2018-09-04 22:29 小石王 阅读(2667) 评论(0) 推荐(0) 编辑
摘要:c/c++ 右值引用 转自:https://www.cnblogs.com/catch/p/3500678.html 左值(lvalue)和右值(rvalue)是 c/c++ 中一个比较晦涩基础的概念,不少写了很久c/c++的人甚至没有听过这个名字,但这个概念到了 c++11 后却变得十分重要,它们 阅读全文
posted @ 2018-09-03 22:38 小石王 阅读(417) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示