c++
amy260231120
后端程序媛
展开
-
C++11(4内存)——智能指针
shared_ptrunique_ptr特点使用引用计数。每个指针的拷贝都指向同一片资源独占性 不支持复制但可以转移关于数组在C+17之前, shared_ptr能不用于管理动态分配的数组。要管理就必须自己写删除器。可以指向数组删除器制定时,需要确认删除器的类型本章笔记参考书《深入应用C++11》学完以后发现书里的内容太浅了,附上我师傅 ...原创 2020-02-06 15:43:53 · 159 阅读 · 0 评论 -
C++11(3泛型编程)——type_traits,变参函数模板
type_traits,变参函数模板原创 2020-02-04 17:29:14 · 814 阅读 · 0 评论 -
C++11(2性能上)——右值引用(需要动态申请大量内存的类),forward,move,emplace_back,无序容器
右值引用(需要动态申请大量内存的类),forward,move,emplace_back,无序容器原创 2020-02-03 17:51:41 · 499 阅读 · 0 评论 -
C++11(1类型上)——auto,decltype,using,默认模板参数,初始化列表,for循环,function,bind,lambda,tuple
auto,decltype,using,默认模板参数,初始化列表,for循环,function,bind,lambda,tuple原创 2020-01-27 15:43:07 · 365 阅读 · 0 评论 -
C++赋值构造拷贝
对于初始化(构造)和赋值的概念初始化(构造):创建一个新的对象的时候赋值:修改已有对象中的值 // 初始化 赋值 int a = 5; // 初始化 int b = (a = 6); // 赋值 + 初始化 Test3 t = 6; // 构造 Test3 t2 = (t = 2); // 赋值 + 拷贝构造class Test3 { ...原创 2019-11-03 21:02:44 · 117 阅读 · 0 评论 -
C++ Lambda匿名函数
表达式的语法捕获列表:要把什么东西拿到函数体里去用,从外界捕获auto func1/*函数名*/ = [/*捕获列表*/][/*函数参数*/]->void/*返回值*/ { /*函数体*/};auto add =[](int a, int b)->int { return a + b;};使用1lambda传给函数指针(函数名就是函数指针)C语言中:只支持捕获列...原创 2019-11-03 20:46:33 · 239 阅读 · 0 评论 -
C++11新特性
右值引用,引用限定符,Lambda, auto 模板,引用,nullptr, 强类型的枚举,constexpr(代替宏),类型转换(static_cast,dynamic_cast,reinterrupt_cast,const_cast),基于范围的for循环,override,final,default,delete,nullptrNULL:#define NULL (void *)0n...原创 2019-11-02 23:15:03 · 172 阅读 · 0 评论 -
C++重学 继承
虽然访问不到基类的私有变量,但其实是确实继承过来了。只是访问不到构造析构顺序:基类构造-》子类构造-》子类析构-》积累析构同名变量(或函数)时:获取基类的成员变量: 子类对象.基类名::变量名子类不会覆盖父类的函数或变量,但是会隐藏掉所有版本的同名函数(包括重载函数)。想调用父类的方法,必须加作用域静态成员的处理静态成员属性可以被子类直接继承下来子类名::静态成员子类名::父类...原创 2019-10-28 17:02:48 · 118 阅读 · 0 评论 -
C++重学 运算符重载
运算符重载[] () = -> * 只能通过成员函数重载<< >> 只能通过全局函数重载不要重载&& || ,失去短路规则成员函数实现重载全局函数实现输入/输出运算符重载 friend ostream &operator<<( ostream &output, ...原创 2019-10-28 14:38:43 · 149 阅读 · 0 评论 -
C++重学 静态,C++类,常函数常对象,友元
static全局静态区静态成员变量:类内声明,类外初始化静态成员函数:不可以访问普通的成员变量单例#include <iostream>class CSingleton{public: static CSingleton& GetInstance() { if (m_pInstance == NULL) m_pInstance = new CSin...原创 2019-10-26 18:11:30 · 136 阅读 · 0 评论 -
C++重学 函数重载,extern C,构造拷贝,explicit,new delete
函数重载函数参数个数,类型,顺序不同实现原理编译器会修改函数名,带上参数类型extern C在C++中想调用C语言方法// Cpp#include <iostream>// 在C++中想调用C语言方法extern "C" { #include "test.h"}int main(){ show(); // 在C++中函数可以重载,编译器会把函数名偷偷修改了...原创 2019-10-25 15:09:24 · 257 阅读 · 0 评论 -
C++ 重学笔记 C++对C的函数扩展 内联函数inline,默认参数,占位参数
内联函数一般用来解决C语言中的带参数的代码块来代替宏中的代码块(也有不同的)// 内联函数必须和函数体实现写在一块// 编译器会把内联函数体插入在函数调用中(宏是预处理器处理的)// 内联函数没有函数调用的额外开销,(压栈,跳转,返回)// 内联函数是对编译器的一种请求,如果编译器拒绝这个请求,那么当成普通函数处理// 函数即使没有被声明为内联,编译器也会自动优化// 内联函数中不...原创 2019-10-12 16:01:22 · 144 阅读 · 0 评论 -
C++ Primer 学习笔记——函数(一)
函数三要素:返回类型,函数名,形参类型 在头文件中声明函数,在源文件中定义局部静态对象 局部静态对象的生命周期贯穿函数调用及之后的时间#include<iostream>using std::cout;int count_calls(){ static int ctr = 0; return ++ctr;}int main(){ for (int i = 0;原创 2015-11-23 19:40:56 · 267 阅读 · 0 评论 -
构造、拷贝构造、赋值
贴代码:#include <iostream>#include <string>class C1 { std::string name;public: C1(const std::string &name): name(name){ std::cout << "构造" << name << std::endl; } C1(const C1 &ot原创 2016-07-14 16:34:26 · 304 阅读 · 0 评论 -
OO与设计模式第二次复习
封装:黑盒 // 封装到类中的函数,需要添加static修饰符继承:泛性关系多态1 静态多态性:函数重载,运算符重载 2 动态多态性:虚函数 C++中的虚函数的实现一般是通过虚函数表(效率不高,额外占空间)。 编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一行。如果类中有N个虚函数,那么其虚函数表将有N*4字节的大小。原创 2016-07-15 10:33:37 · 278 阅读 · 0 评论 -
实习项目——基于Qt5的银行排号叫号系统(客户端)
QString 类型转换QMediaPlayList 和QMediaPlayer 对话框MessageBox和InputDialog 客户端与服务器的连接界面的美化原创 2016-07-22 13:19:48 · 5519 阅读 · 4 评论 -
Cocos网络访问——代理模式(2)
注:本文为作者原创,其中知识内容出自闪电终结者的视频课程首先要强调一点,因为网络访问与Cocos的线程是不同的,网络访问需要自己的子线程(网络请求是需要时间的),所以在写代码时候无法将发生请求和请求数据写在一起,会导致无法请求到正确的数据,所以需要将请求数据之后调用的方法写在一个函数中,使用httpRequest类的setResponseCallback()函数来指定方法。进入正题上次把创建请求之类原创 2016-08-05 22:20:48 · 1361 阅读 · 0 评论 -
浮点型和整型在内存中的存储方式
(代码运行环境:Xcode7.3.1)先来看这段代码#include <stdio.h>int main() { int a = 0x12345678; int i = 0; printf("0x%x, 0x%x\n", &a, a); for(; i < sizeof(a); i++) { printf("0x%x, 0x%x\n",(char *原创 2016-07-14 12:45:54 · 983 阅读 · 0 评论 -
C与C++与OC的混编
C与OC首先创建一个点.m文件// main.m#import <Foundation/Foundation.h>#import "fileC.h"int main(int argc, const char * argv[]) { func1(); return 0;}然后创建一个C文件//fileC.h#ifndef fileC_h#define fileC_h#i原创 2016-09-22 14:19:25 · 4238 阅读 · 1 评论 -
C语言的第二次复习
主函数参数与程序接口(示例3, 示例4) argc (argc - 1 为参数个数) const char *argv[] (参数列表) ./a.out 也是一个参数隐式类型转换(示例5)(!!!!) 负数在计算机中是以该负数的二进制的补码形式 存储的。 在有符号数中,正数第一位是0,负数第一位是1 (参考浮点数和整数在内存中的存储这篇)变量与函数的声明与多文件管理(预处理解决循环包含问原创 2016-07-15 11:49:13 · 383 阅读 · 0 评论 -
重拾C++ string
复制字符串C++string s = "abcdefg";string d(begin(s) + 2, begin(s) + 5);替换C++string a = "abcdefg";a.replace(begin(a) + 2, begin(a) + 5, "XYZW");string b = "abcdefg";b.replace(begin(b) + 2, begin(...原创 2019-09-17 21:48:37 · 126 阅读 · 0 评论 -
C++ 基础重学笔记 namespace ,C++对C的加强, const
namespace定义namespace namespaceA {}使用using namespace namespaceA;C++对C的加强实用性register关键词加强,register:请求编译器直接将变量放到寄存器中(C中没办法取地址,C++中支持register关键词,有优化方式,取地址时候register关键词失效) register int a = 1;...原创 2019-09-24 17:20:14 · 182 阅读 · 0 评论 -
C++ 重学笔记 引用
引用已定义变量的别名 int a = 10; int &b = a;#include <iostream>struct Teacher { char name[64]; int age;};void printT(Teacher* pT) { std::cout << pT->age;}void printT2(Teacher ...原创 2019-09-28 16:07:40 · 121 阅读 · 0 评论 -
C++ Primer 学习笔记——关联容器的操作
pair类型定义在 utility头文件中 pair是一个用来生成特定类型的模板,类中存储2个相关的成员变量 map中每个元素就是一个pair对象pair<T1,T2> p(v1,v2);//v1是first,v2是secondp.firstp.second构造函数Pair() 创建 Pair 类的未初始化的新实例。 Pair(Object^, Object^) 使用指定的对象原创 2016-02-29 15:25:38 · 372 阅读 · 0 评论 -
C++ Primer 学习笔记——关联容器初识
关联容器中元素按照关键字来访问和保存map key-value对(字典中单词是key,单词释义是value)——关联数组, set 只保存关键字 multimap multiset 允许多个元素具有相同的关键字mapmap<key类型,value类型> map<string, size_t> words; string word; while (cin >>原创 2016-02-28 14:44:02 · 391 阅读 · 0 评论 -
C++ Primer 学习笔记——顺序容器的string操作
vector对象的增长 分配比新的空间更大的内存空间,容器预留这些空间作为备用,直到备用也用完时(大小超过当前的capacity时),才重新分配内存空间#include<iostream>#include<vector>using namespace std;int main(){ vector<int> v; cout << v.size() << end原创 2016-02-27 15:08:33 · 301 阅读 · 0 评论 -
C++ Primer 学习笔记——类(一)
* Sale_data*#include<iostream>#include<string>using namespace std;class Sale_data{private: string bookNo;//编号 unsigned units_sold;//出售数量 double revenue ;//总收益public: //构造 Sale原创 2015-12-14 21:03:28 · 289 阅读 · 0 评论 -
C++ Primer 学习笔记——函数(二)
//6.21#include<iostream>using std::cout;int compare(int x, int *p){ return x > *p ? x : *p;}int main(){ int i = 10, j = 20; int *p = &j; cout << compare(i, p); return 0;}//6原创 2015-11-24 19:24:34 · 261 阅读 · 0 评论 -
带有N多BUG的小程序——贪吃蛇
只考虑贪吃蛇的头和尾对象,对头尾做不同的动作分析。//bug::1食物可能出现在蛇身上//2不能穿墙或者遇到墙失败之类的、。//3蛇身体相交时候,就乱了。#include<iostream>#include <stdlib.h> #include <time.h> using namespace std;int map[10][10] = { 0 };int flag = 0;//原创 2015-11-25 20:18:12 · 969 阅读 · 1 评论 -
用python 写贪吃蛇AI算法
作者:Hawstein 出处:http://hawstein.com/posts/snake-ai.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。前言这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过。但如果仅仅是贪吃蛇游戏,那么它就没有什么让人转载 2015-11-24 19:25:34 · 1406 阅读 · 0 评论 -
C++ Primer 学习笔记 ——语句
//p164#include<iostream>#include<string>using std::string;using std::cin;using std::cout;int main(){ char i; int count_vowel=0; int count_blank = 0, count_t = 0, count_n = 0, count_f原创 2015-11-18 21:52:21 · 294 阅读 · 0 评论 -
Cocos学习笔记——Menu
文本菜单-MenuItemFont//init中 MenuItemFont::setFontName("Times New Roman");//设置文本菜单文字字体 MenuItemFont::setFontSize(86);//字体大小 auto item1 = MenuItemFont::create("Starts", CC_CALLBACK_1(Hell原创 2015-12-10 16:15:52 · 477 阅读 · 0 评论 -
C++ Primer 学习笔记——表达式
//4.1#include<iostream>using std::cout;int main(){ int x = 5 + 10 * 20 / 2; double y = 5 + 10 * 20 / 2; cout << x << " " << y; return 0;}//4.10#include<iostream>int main(){原创 2015-11-13 15:40:13 · 276 阅读 · 0 评论 -
C++ Primer 学习笔记——数组
与vector相似,但是数组的大小确认不变定义和初始化内置数组constexpr unsigned sz=3;int arr[sz];//sz为数组的维度,必须是常量int *parr[sz];//3个指向整数的指针int (*Parray)[3]=&arr;//Parray为指向一个3维数组的指针int (&Parray)[3]=arr;//Parry为一个3为数组的引用int *(&Pa原创 2015-11-09 19:19:02 · 353 阅读 · 0 评论 -
C++ primer 学习笔记——迭代器
迭代器与指针类似 只有string和vector等一些标准库类型有下标运算符 所以使用迭代器也能访问string对象字符和vector对象的元素 使用迭代器auto b=v.begin,e=v.end();//end成员负责返回容器(或string) 尾元素的下一个位置 的迭代器,称为 尾后迭代器迭代器与运算符 *it#include<iostream>#include<stri原创 2015-11-04 15:43:26 · 397 阅读 · 0 评论 -
C++ primer 学习笔记——字符串
string原创 2015-11-03 16:52:31 · 319 阅读 · 0 评论 -
C++ Primer 学习笔记——IO类
1.ifstream 和istringstream都继承自istream,因此对三个类的对象的操作相似 2.IO对象不能拷贝不能赋值 IO操作的函数形参和返回值类型不能为流类型 进行IO操作的函数常以引用方式传递和返回流,且不能为const条件状态cin>>word 如果输入成功,流会保持有效状态, cin也会进入错误状态,当word类型不符合时IO库定义了一个与机器无关的iostate类型原创 2016-01-02 22:29:07 · 310 阅读 · 0 评论 -
C++ Primer 学习笔记——函数(三)
返回数组指针Type (*function (parameter_list))[dimension]int (*func(int i))[10]func(int i) 是一个带参数i的函数func *func(int i) 对函数的调用结果进行解引用,即调用结果是一个指针 int (*func(int i))[10] 此指针指向10个数,类型为Int原创 2015-11-26 17:15:50 · 365 阅读 · 0 评论 -
数据结构与算法(c语言) 学习笔记——第三章练习
时间复杂度 就是程序的大概运行步骤数,用程序中的一些变量表示3.1/*print all element*/voidPrintList(List L){ Position P; P=L->Next; if(!IsEmpty(L)) { while(!IsLast(P)) { printf("%d",P->原创 2016-03-10 17:41:29 · 326 阅读 · 0 评论 -
C++ Primer 学习笔记——拷贝控制
拷贝构造函数直接初始化:编译器使用普通的函数匹配,来选择与我们提供的参数最匹配的构造函数 拷贝初始化:将右侧的对象拷贝到正在创建的对象中,通常使用拷贝构造函数来完成调用拷贝构造函数 除了=还有,将一个对象作为实参传递给一个非引用类型的形参从一个返回类型为非引用的函数返回一个对象用花括号列表初始化一个数组中的元素或一个聚合类中的成员拷贝构造函数的参数必须是引用 返回值被用来初始化调用方的结原创 2016-03-07 14:54:48 · 377 阅读 · 0 评论