
C++
jason_cuijiahui
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
函数的输入变量为两个指针时要注意两个指针是否相等
// 下面时交换两个数的函数void swap(int *a, int *b) { *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b;}当传入的a和b的地址不是同一个地址的情况下,函数正常工作int a = 1;int b = 2;swap(&a, &b);// 得到a=2,b=1当传入的a和b的地址是同一个地址的情况下,函...原创 2019-07-20 11:14:22 · 490 阅读 · 0 评论 -
const void *a 与 void *const a 的区别
根据这里可以知道: const void *a指的是(*a)取出来的数是常量,而a本身是变量。 void * const a指的是(*a)取出来的数是变量,而a本身是常量。原创 2018-03-26 18:23:02 · 5086 阅读 · 0 评论 -
不用库函数实现memcpy
#include <stdio.h>#include <assert.h>// const void *src,说明src指向的是常量,再函数内不能通过src修改指向的内容void memcpy_without_lib(void *des, const void *src, int byteLen) { assert((des!=NULL)&&...原创 2018-03-26 18:18:52 · 865 阅读 · 0 评论 -
C++函数中返回引用和返回值的区别
参考自 主要讨论下面两个函数的区别:int& at(){ return m_data_;}int at(){ return m_data_;}上面两个函数,第一个返回值是int的引用int&,第二个返回值是int,二者的区别是什么呢?返回值为引用型(int& )的时候,返回的是地址,因为这里用的是 int& a=myma...原创 2018-03-05 06:30:30 · 1732 阅读 · 1 评论 -
c++ 深入理解虚函数
https://www.cnblogs.com/jin521/p/5602190.html原创 2018-03-03 22:41:17 · 243 阅读 · 0 评论 -
C++面向对象总结
1) C++中空类默认产生哪些类成员函数?class Empty {public:};Ans: 编译器默认产生4个成员函数: 1. 默认构造函数 2. 析构函数 3. 复制构造函数 4. 赋值函数2) C++中struct与class的区别? Ans: C++中的struct里面默认的访问控制是public, class中默认的访问控制是private。3...原创 2018-03-03 22:39:57 · 447 阅读 · 0 评论 -
STL中的无序容器
种类unordered_set (C++11) unordered_map (C++11) unordered_multiset (C++11)unordered_multimap (C++11)上述四种容器采用哈希表实现。不同操作的时间复杂度为:插入:O(1),最坏情况O(N)。查询:O(1),最坏情况O(N)。删除:O(1),最坏情况O(N)。...原创 2017-09-29 22:16:27 · 1279 阅读 · 0 评论 -
STL中的有序容器
map, set, multimap, multiset 四种容器采用红黑树实现,红黑树是平衡二叉树的一种。不同操作的时间复杂度近似为:插入: O(logN)查询:O(logN)删除:O(logN)map 更多C++ maps是一种关联式容器,包含“关键字/值”对。map的基本操作函数: begin() 返回指向map头部的迭代器 ...原创 2018-01-10 14:20:42 · 10945 阅读 · 1 评论 -
C++中随机数的生成
http://blog.youkuaiyun.com/cmm0401/article/details/54599083原创 2018-03-09 22:26:51 · 277 阅读 · 0 评论 -
c++中unsigned int的类型转换的坑 1-3 > 0 == true
unsigned int a = 3; int b = 1; int c = 4; cout<<"b-a = "<<b-a<<endl; cout<<"(unsigned int)(-2) = "<<(unsigned int)(-2)<<endl; co原创 2018-08-09 23:01:42 · 665 阅读 · 0 评论 -
STL 中双端队列deque
经典使用class Solution {public: vector<int> maxInWindows(const vector<int>& num, unsigned int size) { deque<int> state; vector<int> result; ...原创 2018-08-09 23:07:59 · 207 阅读 · 0 评论 -
linux下的stdin,stdout和stderr
参考自在linux中经常会看到stdin,stdout和stderr,这3个可以称为终端(Terminal)的标准输入(standard input),标准输出(standard out)和标准错误输出(standard error)。通过man stdin查看手册,可以看到它们都是在stdio.h中定义的。当linux开始执行程序的时候,程序默认会打开这3个文件流,这样就可以对终端进行输入输...原创 2018-11-29 14:44:43 · 824 阅读 · 0 评论 -
C++/C & struct/typedef
C++struct 结构名{ 类型 变量名; 类型 变量名; ...} 结构变量1, 结构变量2;typedef struct 结构名{ 类型 变量名; 类型 变量名; ...} 结构别名1, 结构别名2; typedef struct{ 类型 变量名; 类型 变量名; ...原创 2018-09-27 16:58:01 · 142 阅读 · 0 评论 -
C++类中的静态成员与静态方法
C++中,若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。静态方法只能调用静态变量。调用方式通过类的实例对象去调用 调用格式为: 对象名.方法名通过类名直接调用 调用格式为: 类名::方法名注意静态方法...原创 2018-09-11 20:55:35 · 2952 阅读 · 0 评论 -
C++中的auto的使用
遍历需要改变迭代对象 for(auto &amp;amp;i:s)string s = &quot;hello&quot;;for (auto &amp;amp;i : s ) i = toupper(i); //改变成大写,影响s的值cout&amp;lt;&amp;lt;s&amp;lt;&amp;lt;endl; //s的值是 HELLO不需要改变迭代对原创 2018-08-28 17:55:03 · 911 阅读 · 0 评论 -
C++11新特性
先列在这里,慢慢填坑如果你的代码工作正常并且表现良好,你可能会想知道为什么还要使用C++ 11。当然了,使用用最新的技术感觉很好,但是事实上它是否值得呢? 在我看来,答案毫无疑问是肯定的。我在下面给出了9个理由,它们分为两类:性能优势和开发效率。获得性能优势理由1:move语义(move semantics)。简单的说,它是优化复制的一种方式。有时候复制很显然是浪费的。如果你从一个临时...原创 2018-08-28 17:42:56 · 473 阅读 · 0 评论 -
C++中的智能指针
很好的资料http://www.cnblogs.com/lanxuezaipiao/p/4132096.html原创 2018-08-28 16:12:19 · 150 阅读 · 0 评论 -
STL中的vector
注意assign的奇怪用法不同类型间的赋值 vector<int> A(3, 3); list<int> B(5, 4); A.assign(B.begin(), B.end()); // A = B会报错 cout<<A.size()<<"|"<<B.size()<<endl原创 2018-08-28 11:37:52 · 189 阅读 · 0 评论 -
STL 中堆heap
例子less&lt;int&gt;() 指下一层比上一层下大堆#include &lt;iostream&gt;#include &lt;vector&gt;#include &lt;algorithm&gt;using namespace std; int main() { int ia[9] = {0, 1, 2, 3, 4, 8, 9, 3, 5原创 2018-08-11 11:23:56 · 208 阅读 · 0 评论 -
让Dev C++支持C++11
http://blog.youkuaiyun.com/u011500062/article/details/44628441转载 2018-03-09 21:41:10 · 7610 阅读 · 0 评论 -
C/C++ 中的char[]与char*
我们可以从三段代码理解两者 1.// 均包含结束标识符'\0'char test1[] = "yes!";char* test2 = "yes!";cout<<test1<<endl; // yes!cout<<test2<<endl; // yes!cout<<sizeof(test1)<<endl; // 输出为5即字符串的长度cout<<sizeof(test2)<<end原创 2018-02-22 21:26:47 · 650 阅读 · 0 评论 -
C++的排序sort
stl中就自带了排序函数sort,sort函数对给定区间所有元素进行排序 #include#includeusing namespace std;int main(){ int test[]={2,4,1,23,5,76,0,43,24,65}; int len = 20; sort(test, test+len); //得到默认的升序结果 for(原创 2018-01-10 10:45:14 · 411 阅读 · 0 评论 -
C++数值类型与string的相互转换
数值->string方法1 流#include<sstream>//ostringstream对象用来进行格式化的输出,常用于将各种类型转换为string类型//ostringstream只支持<<操作符template<typename T> string toString(const T& t){ ostringstream oss; //创建一个格式化输出流 oss<<原创 2018-01-11 19:22:49 · 973 阅读 · 0 评论 -
C++的二维数组(全)
首先需要理解int a; int *a; int **a; int (*a)[10]; int *a[10];int (*a)(int);各自的含义,并学会区分a) int a; 表示一个内存空间,这个内存空间用来存放一个整数(int)b) int *a; 表示一个内存空间,这个内存空间用来存放一个指针,这个指针指向a)那样的内存空间c) int **a; 表示一个内存空间,这个内存空间用来存放一个原创 2017-11-13 18:20:40 · 1038 阅读 · 0 评论 -
一个漂亮的打印二叉树的程序
转自// copyright @ L.J.SHOU Jan.16, 2014 // a fancy binary tree printer #ifndef BINARY_TREE_PRINTER_H_ #define BINARY_TREE_PRINTER_H_ #include <cmath> #include <iostream> #include <vector> u转载 2017-10-07 19:20:15 · 2060 阅读 · 0 评论 -
for循环内局部变量的生命周期
for (int i = 0; i != 10; i++) { int j; j = i; cout << j << endl; cout << &j << endl; } i 的生命周期是从循环开始到循环结束,共10次循环;j的生命周期只能延续1次循环,后被销毁(j的值 和j的地址都不存在了)。下一次循环,重新声明新变量j;原创 2017-10-06 21:33:05 · 9890 阅读 · 0 评论 -
C++的宏
http://blog.youkuaiyun.com/fox64194167/article/details/48651543 http://bbs.youkuaiyun.com/topics/340123767 http://www.cnblogs.com/dong008259/archive/2011/12/27/2302625.html http://www.cnblogs.com/ht-927/p/47265原创 2017-09-27 18:21:42 · 225 阅读 · 0 评论 -
看懂C/C++语言的声明语法,并与Go语言进行比较
https://blog.go-zh.org/gos-declaration-syntaxhttp://www.cnblogs.com/haore147/p/3647262.html原创 2017-09-06 22:45:10 · 726 阅读 · 0 评论 -
为什么C++中stack/queue的pop()函数不返回值而返回void
http://blog.youkuaiyun.com/sxyizhiren/article/details/42506823转载 2017-09-26 18:20:34 · 3580 阅读 · 0 评论 -
C++中 string对象的大小比较
原理: 两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。当两个数的位数一样,则直接可以应用字符串的比较。如 "1346" > "1111" == true例子:#include<iostream>#include<string>using namespace std;int main(){ string str1("235");原创 2018-01-11 20:56:41 · 61573 阅读 · 5 评论 -
为类型CMyString的声明,请为该类型添加赋值运算符函数
转自 题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{public:CMyString(char* pData = NULL);CMyString(const CMyString& str);~CMyString(void);private:char* pData;};分析:赋值运算符要注意以下四点:把返回值的类型声明为该类转载 2018-01-03 15:18:57 · 301 阅读 · 0 评论 -
STL 中优先队列priority_queue
优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队。元素的比较规则默认按元素值由大到小排序,可以重载“。 操作empty() 如果队列为空返回真pop() 删除队顶元素push() 加入一个元素size() 返回优先队列中拥有的元素个数to原创 2018-01-10 14:29:55 · 283 阅读 · 0 评论 -
STL中的队列queue
基本操作push(x) 将x压入队列的末端pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值front() 返回第一个元素(队顶元素)back() 返回最后被压入的元素(队尾元素)empty() 当队列为空时,返回truesize() 返回队列的长度例子#include<iostream>#include<queue>using namespace std;void Prin原创 2018-01-10 14:06:16 · 270 阅读 · 0 评论 -
c++中指针的++操作
对于指针的++,在C++里,默认是对类型进行++#include<iostream>using namespace std;int main(){ int src[] = {1, 2, 3}; int *p = src; cout<<*src<<"|"<<*(src+1)<<endl; // 1|2 }原创 2018-01-08 17:03:44 · 2187 阅读 · 0 评论 -
C++中的sizeof和strlen
#include<iostream>using namespace std;int main(){ char test1[] = ""; cout<<sizeof(test1)<<endl; // 1 cout<<strlen(test1)<<endl; // 0 int test2[] = {1, 2, 3}; cout<<sizeof(test2)/si原创 2018-01-08 16:57:30 · 264 阅读 · 0 评论 -
实现一个只能实例化一次的类 即 单例模式(Singleton)
单例模式的要点有三个:某个类只能有一个实例;它必须自行创建这个实例;它必须自行向整个系统提供这个实例。 从具体实现角度来说,就是以下三点:单例模式的类只提供私有的构造函数类定义中含有一个该类的静态私有对象该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。 class CSingleton { public: static CS原创 2018-01-17 14:17:52 · 3882 阅读 · 0 评论 -
C++类中的static关键字
静态数据成员在类中数据成员的声明前加上static,该成员是类的静态数据成员.例子#include using namespace std; class MyClass { public: MyClass(int a, int b, int c); void fun(); private: int a,b,c;原创 2018-01-17 13:58:25 · 332 阅读 · 0 评论 -
实现一个无法被继承的C++类
如何写一个不能被继承,且能正常使用的类,下面提出三种思路。C++11 的final关键词类被final修饰,不能被继承。class A1 final {};class B1 : A1 {}; // "B1":无法从"A1"继承,因为它已被声明为"final"更多关于C++11 override 和 final私有声明类的构造函数一个类不能被继承,也就是说它的子原创 2018-01-05 11:26:38 · 306 阅读 · 0 评论 -
STL中set底层实现方式? 为什么不用hash?
当强调hash表的缺点时,一定要说明内存分配的问题,会浪费一部分内存。而且hash表会为每种类型构造hash函数,不一定快。set是用红黑树实现的,红黑树是一种平衡性很好的二分查找树。要使用hash的话,就需要为不同的存储类型编写哈希函数,这样就照顾不到容器的模板性了,而是用红黑树只需要为不同类型重载operator<就可以了。红黑树与hash table最大的不同是,红黑树是有序结构,而has原创 2018-01-22 08:53:14 · 1098 阅读 · 0 评论 -
C++泛型
http://www.cnblogs.com/wangduo/p/5559260.html函数类原创 2017-09-10 13:53:33 · 224 阅读 · 0 评论