C++
文章平均质量分 83
180斤的程序员
请支持我的博客,有什么不对的地方请指教!
展开
-
enum和enum class的使用
enum只能用在类外,并且作用域的范围为全局。enum class既用在类外,又可以用在类内,用在类内作用域的范围为整个类,类外作用域全局。无论内外,只要用到里面的内容必须加上 枚举类::内容c++11中引入了新的枚举类型---->强制枚举类型enum [identifier] [: type]{enum-list}; enum [class|struct] [ident原创 2017-09-06 09:36:00 · 5267 阅读 · 0 评论 -
标准库类型vector
概念:vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。如果想用到vector,就必须include和 using namespace stdvector是一个类模板,vector是模板并非类型,由vector生成的类型必须包含vector中元素的类型。vector1.1定义和初始化vector对象初始化vector原创 2017-09-07 10:54:49 · 189 阅读 · 0 评论 -
string的使用
1、string的一些概念a) string表示可变长的字符序列,使用string类型必须首先包含string头文件。作为标准库一部分,string定义在命名空间std中。比如想用string,先记得在头文件include和记得string前面添加std::或者使用using namespace std;2、定义和初始化string对象初始化string对象的方式string原创 2017-09-07 10:54:57 · 358 阅读 · 0 评论 -
C++ vector容器中如何查找一个值是否在这个容器中
vector vec;vec.pushback(1);If(find(vec.begin(),vec.end(),3) == vec.begin() ){//没有这个值}else{//有这个值}原创 2017-09-07 10:55:07 · 16771 阅读 · 2 评论 -
pairs和make_pair的使用
常使用在map对象insert里面1、PairsC++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象classpair可以将两个值视为一个单元。容器类别map和multimap就是使用pairs来管理其健值/实值(key/value)的成对元素。std::pair> pair被定义为struct,因此可直接存取pair中的个别值.两个pair原创 2017-09-07 10:55:14 · 1293 阅读 · 0 评论 -
extern的使用
如果想在别的文件里调用不在声明类某个函数或者变量,可以使用extern比如在A.h 声明extern bool g_AppShowStatsLabel;extern string GBKTOUTF8(const char *inbuf);这两个声明都不在类里面声明,都在类外声明的。在B.cpp调用g_AppShowStatsLabel = true; GBKTOUTF8("调用");原创 2017-09-07 10:55:20 · 313 阅读 · 0 评论 -
rand和srand函数的使用
void srand(unsigned seed);//srand函数是随机数发生器的初始化函数int rand(void)//rand函数用来产生随机数,当然是伪随机数。seed的作用:srand函数的作用是根据参数seed,设置一个随机起始点,而rand函数根据这个起始点,产生随机数序列。默认的随机种子为1.如果随机种子一样,rand函数所产生的随机序列也一样。因此,为使每次程序运行都原创 2017-09-08 09:06:27 · 2049 阅读 · 0 评论 -
struct和typedef struct的区别
1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef:typedef struct Student{int a;}Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名。Stu==stru原创 2017-09-08 09:06:33 · 153 阅读 · 0 评论 -
STL中的find,find_if函数(对类、容器(vector、list)进行查找)
举例using namespace std;int main(){ listlst;lst.push_back(10);lst.push_back(20);lst.push_back(30);list::iterator it = find(lst.begin(), lst.end(), 10); //查找list中是否有元素“10”if(it != lst.原创 2017-09-08 09:06:50 · 1300 阅读 · 0 评论 -
C++ set容器
set集合容器:调用头文件:#includeusing namespace std;详细用法(部分):set t ------ 定义一个int类型的容器,注意set里的每个元素只会出现1次t.insert(k) ------ 插入元素k,多次插入同一个元素后面无效t.count(k) ------ 判断元素k是原创 2017-09-08 09:06:57 · 257 阅读 · 0 评论 -
C++ map容器
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1、map最基本的构造函数; mapmapstring; mapmapint; mapmapstring; mapmapchar; mapmapchar; mapmapint;原创 2017-09-08 09:07:03 · 182 阅读 · 0 评论 -
数组
1、数组的概念数组是存放类型相同的对象的容器,这些对象本身没有名字,需要通过其所在位置访问。与vector不同的地方是,数组的大小确定不变,不能随意向数组中添加元素。如果不清楚元素的确切个数,请使用vector。2、定义和初始化内置数组 数组的声明a[d],a表示数组名,d表示数组的维度。维度说明了数组中元素的个数。因此必须大于0.维度必须是一个常量表达式。unsigned int原创 2017-09-07 10:54:42 · 265 阅读 · 0 评论 -
指针
计算机的内存最小单位是BYTE,每一个BYTE的内存都有一个唯一的编号,这个编号就是内存地址,编号在32位系统下是32位的整数,在64位系统下是64位的整数。1、指针的含义与定义指针变量指向的是一个地址,而不是一个整数(浮点)值例如:int a= 0;int b = 10;char buf[10];printf(“%p,%p,%p\n”,&a,&b,buf);//输出的是a,b的地原创 2017-09-07 10:54:35 · 290 阅读 · 0 评论 -
std::function的使用
function是一个模板例如://普通函数int add(int a,int b){return a+ b;}function = add;//函数指针//函数对象类struct divede{int operator()(int denominator,int divisor){return denominator/divisor;}}fun原创 2017-09-06 09:36:07 · 278 阅读 · 0 评论 -
C语言中%d %.2d %2d %02d的区别
1、%d就是普通的输出了2、% 2d是将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格。如下:3、% 02d,和% 2d差不多,只不过左边补04、%.2d从执行效果来看,和% 02d一样原创 2017-09-06 09:36:21 · 31367 阅读 · 0 评论 -
dynamic_cast和 static_cast的区别
(dynamic_cast)必须要有虚函数才能进行转换,static_cast静态转换,不安全。)运行时类型信息通过运算符dynamic_cast来提供。dynamic_cast用来向下转型,将基类指针转换为派生类指针.(把基类指针转换为派生类指针)向下转型,向上转型的话就用强制转换。运算符dynamic_cast(ptr)用来将一个指针类型转换为另外一个指针类型。它经常用来检查一个基类指原创 2017-09-06 09:36:30 · 5592 阅读 · 0 评论 -
变量的初始化C++新特性
例如:int a = 0;int a = {0}; // 列表初始化方式1 int a{0}; // 列表初始化方式2原创 2017-09-06 09:36:43 · 175 阅读 · 0 评论 -
什么时候用delete[]和delete
delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存当new对象有[]就用delete[],否则用delete,delete指针以后应赋值为NULL,最好先判断这个指针是否存在例如char* afficheContent = new char[afficheSize];delete[] afficheContent;原创 2017-09-06 09:36:53 · 2123 阅读 · 0 评论 -
引用和指针的区别
&作为左值或形参为引用,作为右值或实参为地址★ 相同点: 1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。★ 区别: 1. 指针是一个实体,而引用仅是个别名 2. 引用使用时无需解引用(*),指针需要解引用 3. 引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终” 4.原创 2017-09-06 09:37:03 · 577 阅读 · 0 评论 -
获取一维数组的维度(元素的个数)
int array[] = {1,2,3,5,6,7,8,9};int count = sizeof(array)/sizeof(array[0]);//计算出数组元素个数原创 2017-09-06 09:37:15 · 3531 阅读 · 0 评论 -
整型的范围大小
char (8位) int8_t (-128~127)unsigned char (8位) uint8_t (0~255)//但是最多打印254 short (16位) int16_t (-32768~32767)unsigned short (16位) uint16_t (0~65535) //但是最多打印65534 int (32位) int32_t (-21原创 2017-09-07 10:54:15 · 2343 阅读 · 0 评论 -
constexpr的使用
l 含义1、常量表达式:指值不会改变并且在编译过程就能得到计算结果的表达式。 如:const int max_files = 20; //max_files是常量表达式const int limit = max_files + 1; //limit是常量表达式int staff_size = 27; //staff_原创 2017-09-07 10:54:22 · 1983 阅读 · 0 评论 -
unsigned省略关键字
unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int原创 2017-09-07 10:54:28 · 615 阅读 · 0 评论 -
C++ deque容器
C++ Deque(双向队列) 是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪。向deque两端添加或删除元素的开销很小。它不需要重新分配空间,所以向末端增加元素比vector更有效。 实际上,d原创 2017-09-08 09:07:11 · 232 阅读 · 0 评论 -
C++ list容器
1、创建一个list实例并赋值// 创建实例以及赋值#include #include using namespace std;int main () { //第一种,通过构造函数 int myints[] = {75,23,65,42,13}; list mylist1(myints, myints+5); list mylist2(2原创 2017-09-08 09:07:18 · 361 阅读 · 0 评论 -
enum的使用之处
当我们只是使用在设置tag值时,使用enum{};不需要什么枚举类型名当我们区分某个部分的话,就需要使用enum class/struct 名称{},定义一个名称的类型变量;例如enum//tag值作用{TAG_1, //按钮Use标签;TAG_2 //按钮Using标签;};enum class EnumClass//分类使用{TYPE_1,TYP原创 2018-01-26 10:41:06 · 170 阅读 · 0 评论 -
计算数组元素的个数
#ifndef _countof#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))#endif原创 2018-01-26 10:41:24 · 2748 阅读 · 0 评论 -
定义数据类型
#ifndef LLDATATYPEtypedef long long LLDATATYPE;#endif原创 2018-01-26 10:41:43 · 394 阅读 · 0 评论 -
前项声明
前向声明:可以声明一个类而不定义它。这个声明,有时候被称为前向声明(forward declaration)。在声明之后,定义之前,类Screen是一个不完全类型(incompete type),即已知Screen是一个类型,但不知道包含哪些成员。不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类原创 2018-01-29 09:27:32 · 348 阅读 · 0 评论 -
友元类和友元函数
友元提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。c++中的友元为封装隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小孔窥视内部的秘密。友元的正确使用能提高程序的运行效率,但同时也破坏了类的封装性和数据的隐藏性,导致程序可维护性变差。友元函数 :友元函数是可以直接访问类的私有成员原创 2018-01-29 09:27:55 · 251 阅读 · 0 评论 -
VS打开终端功能,从终端中可以查看日志信息(相当于VS中的输出功能)
// 打开终端;#if defined(_WIN32) && defined(COCOS2D_DEBUG) && (COCOS2D_DEBUG > 0)AllocConsole();//重定向输入输出;freopen("CONIN$", "r", stdin);//到磁盘文件中输入;freopen("CONOUT$", "w", stdout);//输出到磁盘文件;freo原创 2018-01-29 09:28:42 · 9151 阅读 · 0 评论 -
文件操作(创建文件、写入数据、关闭文件)
功能:从B文件中拷贝其中的数据到一个新建的A文件中Data fileData = FileUtils::getInstance()->getDataFromFile("LuaActive.bundle/LuaInterFace.lua");//获取B文件的数据;if (fileData.getSize() != 0){CreatDir(FileUtils::getInstance(原创 2018-01-29 09:30:11 · 1679 阅读 · 0 评论 -
C语言文件操作相关函数
一、打开与关闭文件fopen 函数说明:作用:用来打开一个文件格式:FILE * fopen(const char * path,const char * mode);返回值:打开文件成功返回一个文件指针,若打开文件失败则返回NULL参数说明: *path:字符串包含欲打开的文件路径及文件名(例如:D:\\A.txt),注意在C语言中欲输出一个"\"则需要输两个"\\原创 2018-01-29 09:30:33 · 597 阅读 · 0 评论 -
字符串之间的赋值
string和string之间赋值、char[]/(char*)赋值给string使用=string赋值给char[]/char*,char[]/(char*)赋值给char[]/(char*)使用strcpy//char c[len+1]; //这里len是变量,能用来声明数组string s("abcd");int len = s.length();char *c = ne原创 2018-01-29 09:31:00 · 3990 阅读 · 0 评论 -
分离整数的每位数字
std::vector TableListLayer::getNumList(int32_t value){std::vector numList;while (true){if ((value / 10) > 0){numList.push_back(int(value % 10));value /= 10;}else{numList.push_b原创 2018-01-26 10:40:45 · 1126 阅读 · 0 评论 -
bool更进一步使用
bool c = false;if a == b thenc = true;更简单的使用方法就是bool c = a== b;原创 2018-01-26 10:40:26 · 253 阅读 · 0 评论 -
C++ vector容器
1、基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout记住下标是从0开始的。(5)使用迭代器访问元素.vector::iterator it;for(it=vec.begin();it!=vec.end();it++) cout(6)原创 2017-09-08 09:07:31 · 227 阅读 · 0 评论 -
标准模板库STL入门简介与常见用法
一、STL简介1、什么是STLSTL(Standard Template Library)标准模板库,主要由容器、迭代器、算法、函数对象、内存分配器和适配器六大部分组成。STL已是标准C++的一部分,使用STL开发系统可以提高开发效率。2、容器(Containers)容器类是可以包含其它对象的模板类,如向量类(vector)、链表类(list)、双向队列类(deque)、集合类(s原创 2017-09-09 19:02:48 · 452 阅读 · 1 评论 -
细数Cocos2d-x开发中那些常用的C++11知识
自从Cocos2d-x3.0开始,Cocos2dx就正式的使用了C++11标准.C++11简洁方便的特性使程序的可拓展性和可维护性大大提高,也提高了代码的书写速度。下面我们就来一起学习一下Cocos2d-x开发中那些不得不了解的C++11知识。 1.初始化列表POD结构或者数组根据成员在结构内定义的顺序,可以使用初始化列表来进行初始化以简化代码。struct StructA{原创 2017-09-09 19:03:24 · 504 阅读 · 0 评论 -
virtual关键字的使用
1.虚函数类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Base的print函数。这是面向对象中的多态性的体现基类的函数原创 2017-09-09 19:04:02 · 419 阅读 · 0 评论