C++primer读书笔记
1emerald
wwwwwww
展开
-
Win下控制台简单贪吃蛇实现
贪吃蛇???算是对大一课设的交代>>>,代码抄过来的vs2020下编译,仅使用Sleep()和system(“cls”),_kbhit(),等几个win api结构: ------ main.c global.c global.h主要思路:2维数组每个点分别存墙(1),空地(0),蛇身体(2),食物点(3).然后遍历2维数组printf绘图蛇身体长度通过int* body[]指针数组指向对应地图点,main.c//#define _WINSOCK_DEPRECATED_原创 2020-10-01 20:08:48 · 187 阅读 · 0 评论 -
编译期实现排序
编译期间实现排序在b站上看到的,凭借一点c++ 的知识勉强读懂思路Values实现将基类对象类型放在(展开在)tuple中,std::tuple<>是个聚合类,能将参数包中不同元素类型糅合成一种类型,排序就是在tuple上进行的模板类实现判断, template<bool,typename Then,typename Else> If封装成Com...原创 2020-02-05 21:04:33 · 660 阅读 · 0 评论 -
const int* 和 const int * const 和 int const * 的区别
const int*和const int * const和 int const *的区别原文地址int const *是一个指向常量整数的指针指向了一个不能被修改的值但是指针指向的地址可以改变const在数据类型的一侧,所以可以放在int的前面const int *,(从c++ prime了解到)#include <stdio.h>int main() {...原创 2019-12-18 19:31:49 · 1173 阅读 · 1 评论 -
c++流和c流
c++ 流 和 c 流标准的c++流默认与其相对应的c流同步:( 在每次输入/输出后同步 )同步的c++流 无缓冲,每次c++流上的I/OI/OI/O操作都立即应用到对应 C 流的缓冲区。这使得能自由地混合 C++ 与 C I/OI/OI/O 。若关闭同步,则允许 C++ 标准流独立地缓冲其 I/O ,可认为这在某些情况下更快。#include <iostream&...原创 2019-12-14 22:25:59 · 727 阅读 · 0 评论 -
lambda表达式后的()
一直对lambda后面的()这种离奇的语法感到奇怪,今天看到如下代码:auto optimize_cpp_stdio = []() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); std::setvbuf(stdout, nullptr, _I...原创 2019-12-14 19:02:10 · 410 阅读 · 1 评论 -
文本查询程序(类的继承体系)
单词查询的基础上实现3个逻辑查询~得到所有不匹配的行&将2个匹配结果取交集|将2个匹配结果取并集表达式查询:Query("xx") & Query("xx") | Query("xx")如何抽象出基类 且 定义接口类TextQuery已经实现了单词查询,如果剩下的3个操作通过TextQuery派生.但是当2个对象进行&和|操作时,我们又要定义 派生...原创 2019-09-22 14:47:34 · 153 阅读 · 0 评论 -
string简化版allocator分配内存
通过allocator类来分配内存实现简化版string功能:String(const char*)和String(const std::string)接受隐式类型转换重载string的多种运算符:[],+,+=,<<,>>实现string多个成员函数size(),等构造函数和析构函数对原始内存的分配和释放,内存分配问题allocator<>...原创 2019-09-15 13:55:50 · 654 阅读 · 0 评论 -
动态内存管理类StrVec的实现
实现一个动态内存管理类StrBlob中vector<string>可以管理元素的内存.实现一个vector<string>allocator<>类是分配的原始内存,当调用alloc.destroy(first_free),按道理来说destroy执行对象的析构函数,string的析构函数执行完后会回收内存,再访问该string就访问越界了但是如果...原创 2019-09-14 18:32:36 · 268 阅读 · 0 评论 -
行为像(值/指针)的类
行为像值的类每个类的数据成员都有一份自己的拷贝.不共享数据成员.#include <iostream>#include <string>#include <memory>using namespace std;class HasPtr{public: HasPtr():ps(make_shared<string>()),...原创 2019-09-12 13:35:21 · 390 阅读 · 0 评论 -
StrBlob类封装shared_ptr的文本查询程序
核心: 类之间通过智能指针来共享数据接口和实现分离,并且将shared_ptr<vector<string>>封装成StrBlob类并且通过StrBlobPtr来作为StrBlob的接口StrBlob以及StrBlobPtr实现#ifndef MY_STRBLOB_H#define MY_STRBLOB_H#include <vector>#in...原创 2019-09-09 16:28:52 · 117 阅读 · 0 评论 -
shared_ptr实现类的数据共享(文本查询类的定义
面对过程vector<>来存输入文件的每一行map<string,set<int>>,每一个单词映射一个集合,集合包含其出现的行数istringstream:将每一行string放到字符串流里面,通过流来分割出单词, 1 #include <iostream> 2 #include <sstream> 3 #incl...原创 2019-09-02 19:58:17 · 683 阅读 · 1 评论 -
allocator 类的使用方法
new分配内存并且构造对象delete释放内存并且析构对象注意delete删除指向动态数组的指针 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 int main() { 7 char *r = new char[20]; ...原创 2019-09-01 20:42:19 · 749 阅读 · 0 评论 -
StrBlob类的实现(shared_ptr与weak_ptr的混用)
my_StrBlob.h实现了2个类StrBlob StrBlobPtrStrBlob成员包含shared_ptr<>,StrBlobPtr这个伴随类有weak_ptr<>和shared_ptr共享一块内存,在2个类之间建立一些接口作为参数的initializer_list<>的用法,实参数量未知但是实参类型相同,用法和vector类似,但initial...原创 2019-08-31 20:57:52 · 332 阅读 · 9 评论 -
Sales_data类实现 及 类特性
实现Sales_data类#include <iostream>#include <string>class Sales_data { friend std::istream& operator >> (std::istream&, Sales_data&); friend std::ostream& operator ...原创 2019-08-24 22:16:07 · 1781 阅读 · 0 评论 -
using+auto+decltype
类型别名(type alias)typedef double *p,p是double*的同义词typedef char *pstring,pstring是char*的同义词const pstring cstr = 0;//一个常量指针const char *p;// 一个指向char常量的指针const pstring cstr != const char *cstr. 别将别名替...原创 2019-07-20 15:31:27 · 148 阅读 · 0 评论 -
const限定符解析
constconst对象一旦创建后就不能再改变,所以const对象必须初始化const int i = get_size(); //运行时初始化const int j = 10; // 编译时初始化编译器在编译过程将该变量都替换成常量const引用,允许常量引用const int ci = 10;const int &r1 = ci; r1 = 42;...原创 2019-07-17 20:35:45 · 204 阅读 · 0 评论