![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++学习
文章平均质量分 84
hachyli
这个作者很懒,什么都没留下…
展开
-
C++ typedef用法小结
第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针转载 2014-07-20 14:27:37 · 354 阅读 · 0 评论 -
C++虚函数实现机制总结
1、 什么是虚函数。 虚函数由于必须是在类中声明的函数,因此又称为虚方法。所有以virtual修饰符开始的成员函数都成为虚方法。此时注意是virtual修饰的成员函数不是virtual修饰的成员函数名。原创 2014-07-26 12:12:05 · 619 阅读 · 0 评论 -
vector的reserve和resize
vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下: reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。 r原创 2014-09-10 17:15:13 · 375 阅读 · 0 评论 -
Two Sum leetcode
Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, whe原创 2014-08-21 08:21:12 · 333 阅读 · 0 评论 -
C++堆,栈,静态存储区介绍
1、栈区(stack)— 由编译器自动分配释放 ,存放函数参数值,局部变量值等。其操作方式类似于数据结构中栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量存储是放在一块,初始化全局变量和静态变量在一块区域, 未初原创 2014-08-20 16:23:39 · 471 阅读 · 0 评论 -
C++ 栈对象 堆对象 理解
在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。1、静态建立类对象:是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。2、动态建立类对象,是使用new运算符将对象建立在堆空间中。这个过程分为两步原创 2014-08-20 16:20:00 · 8426 阅读 · 2 评论 -
C++中map、hash_map、unordered_map、unordered_set通俗辨析
一、hash_map、unordered_map这两个的内部结构都是采用哈希表来实现。区别在哪里?unordered_map在C++11的时候被引入标准库了,而hash_map没有,所以建议还是使用unordered_map比较好。哈希表的好处是什么?查询平均时间是O(1)。顾名思义,unordered,就是无序了,数据是按散列函数插入到槽里面去的,数据之间无顺序可言,但是有些时候原创 2014-08-18 13:17:56 · 9412 阅读 · 0 评论 -
C++ STL--stack/queue 的使用方法
1、stackstack 模板类的定义在头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack s1;stack s2;stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();注意,出栈操作只是原创 2014-07-29 10:38:07 · 385 阅读 · 0 评论 -
C++Vector用法
C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。标准库vector类型使用需要的头文件:#include 。vector 是一个类模板。不是一种数据类型,vector是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。一、 定义和初始化vecto原创 2014-07-28 21:42:17 · 392 阅读 · 0 评论 -
C++ string类
要想使用标准C++中string类,必须要包含#include // 注意是,不是,带.h的是C语言中的头文件原创 2014-07-28 14:40:28 · 356 阅读 · 0 评论 -
C风格字符串和C++string类对比 使用实例
一.C风格字符串◆ 1、字符串是用字符型数组存储的,字符串要求其尾部以’\0’作为结束标志。如: char string[ ]=”C++ programming language”;用sizeof来测string长度为25个字节,而实际串本身长度(含空格)为24个字节,多出来的一个就是串结束符’\0’(含0)。◆ 2、指针与字符串 char *pstr=”C++原创 2014-07-28 14:50:04 · 3095 阅读 · 0 评论 -
C++ STL中哈希表 hash_map介绍
0 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信转载 2014-07-25 21:50:50 · 379 阅读 · 0 评论 -
C++成员变量的初始化顺序问题
1、成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。因为成员变量的初始化次序是根据变量在内存中次序有关,而内存中的排列顺序早在编译期就根据变量的定义次序决定了。这点在EffectiveC++中有详细介绍。2、如果不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关。3、注意:类成员在定义时,是不能初始转载 2014-07-20 14:22:10 · 525 阅读 · 0 评论 -
设计一个只能在堆上或栈上实例化的类
一道C++笔试题:设计一个只能在堆内存上实例化的类和一个只能在栈内存上实例化的类只能在堆内存上实例化的类:将析构函数定义为private,在栈上不能自动调用析构函数,只能手动调用。也可以将构造函数定义为private,但这样需要手动写一个函数实现对象的构造。只能在栈内存上实例化的类:将函数operator new和operator delete定义为private,这样使用new操转载 2014-07-20 18:46:16 · 441 阅读 · 0 评论 -
LRU Cache leetcode
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.get(key) - Get the value (will always be positive) of the key if原创 2014-09-02 17:06:20 · 342 阅读 · 0 评论