自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

转载 C++智能指针scoped_ptr的原理和使用

scoped_ptr是一个类似于auto_ptr的智能指针,它包装了new操作符在堆上分配的动态对象,能够保证动态创建的对象在任何时候都可以被正确的删除。但是scoped_ptr的所有权更加严格,不能转让,一旦scoped_pstr获取了对象的管理权,你就无法再从它那里取回来。正如scoped_ptr(局部指针)名字的含义:这个智能指针只能在作用域里使用,不希望被转让。代码实现如下:

2018-01-23 10:35:17 15893 2

转载 C++智能指针auto_ptr的原理及使用

std::auto_ptr auto_ptr是C++标准库中()为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针) auto_ptr的实现原理其实就是RAII(Resource Application Immediately Initialize),在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。使用auto_pt

2018-01-22 21:35:32 9994 3

原创 字符串笔试题3:火柴棒问题

题目: 火柴棒问题 用火柴棒摆成的0-9间的数字,横向由一根火柴构成,纵向都是由两根火柴构成,可按如下规则进行变化: 1.数字移动一根火柴棒可变成其它0到9之间合法的数字 2.数字添加一根火柴棒可变成其它0到9之间合法的数字 3.数字去掉一根火柴棒可变成其它0到9之间合法的数字 现在给出一个带有两个操作数的+,-,*,/的算术式子,需要你判断该式

2018-01-15 11:13:38 2051 1

原创 字符串笔试题2:大数的加减法计算

题目: 大数的加减法class BigInteger{public: BigInteger(char* number);private: char *_number; friend BigInteger operator+(const BigInteger &left, const BigInteger &right); friend BigInteger o

2018-01-15 11:08:10 1175

原创 字符串笔试题1:找出子串在字符串中出现的次数,子串中的字符可以不连续,但顺序固定

题目: 有一天,小明在游戏中获得了一串数字,直觉告诉他这不是一串普通的数字串,或许可以破解一些关于网易的秘密。破解的第一步,他很想知道,在这串数字中,最多可以挑出多少个‘9706’串。挑选的规则为: (1)挑出的数字’9’,’7’,’0’,’6’在原串中可以不连续,但是数字的先后顺序不能改变 (2)使用过的数字不能被再次使用 如’123901370997606

2018-01-15 11:02:34 4981

原创 C++找出字符串中最长的不含重复字符的子串

题目:找字符串中最长的不重复子串 string str = "890123457063788263178548596239785";方法1:使用string和vector //保存不重复的临时子串 string tmp; //保存所有不重复的子串 vectorstring> svec; //记录每次开始查找字符的相对位置 int

2018-01-14 22:20:19 7706 1

原创 C++删除字符串中的子串

题目:string str = "62354iijnjnij26758667ijn615468565ij"将子字符串"ijn"全部删除方法1: 该方法有个缺陷,它会将字符串中只要是ijn顺序的字符都会删除 int pos = 0; while ((pos = str.find("ijn")) != -1) { str.erase(pos, 3); }

2018-01-14 22:13:57 19070 2

原创 C++实现带赋值运算符重载函数和迭代器的String类

该类实现了C++中string类中定义的基本方法,可以看出其类似于容器。#include using namespace std;class CString{public: //带一个默认值参数的构造函数 CString(const char *p = NULL) { if (p == NULL) {

2018-01-14 21:54:31 613

原创 C++实现带写时拷贝功能的String类

字符串写时拷贝实现原理: 通过对象的引用计数来减少内存的申请开销,经过拷贝构造或赋值函数得到的所有对象,在还没有对其中某个某个对象进行修改操作时,都共享一个对象的内存。否则,如果原有对象的引用计数大于1时,将会为修改的对象分配新的内存,并在原有的对象引用计数中减一。方法1成员变量是字符指针类型,字符串前四个字节用来存放当前对象被引用的次数。class CString{public: C

2018-01-14 20:43:13 261

原创 剑指offfer面试题5:从尾到头打印链表

题目:输入一个链表的头结点,从尾到头反过来打印每个结点的值。单链表的实现:1、linklist.h#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef int Elem_Type;typedef struct LNode{ Elem_Type data; struct LNode* next;}LNode,*Lin

2018-01-09 16:59:28 203

原创 剑指Offer面试题4:替换字符串中的空格

题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入"We are happy.",则输出"We%20are%20happy."。解题方案: 方案一:从前往后替换空格。每找到一个空格将剩余字符都向后移动两位,并用"%20"替换空格,由于有的字符会移动不止一次,所以时间复杂度是o(n2),要求字符数组的长度要足够长。 方案二:从后往前替换空格。先遍历字符串,计算出字符串的长度和所含

2018-01-04 12:33:27 219

原创 剑指offer面试题3:在二维数组中查找数字

题目:给定一个二维整型数组和一个数字,查找该数字是否在二维数组中。该二维数组的特点是:每一行的数字递增排序,每一列的数字也是递增排序。解题方案: 方案1:从数组中间开始查找; 若要查找的数字比中间数字小,则可能出现地方在该数字的右半部分和下半部分,出现重叠;若要查找的数字比中间数字大,则可能出现的地方在该数字的左半部分和上班部分,依旧会重叠。 方案2:从数组左上角或者右下角开始查找; 如果要

2018-01-03 17:59:04 395

原创 剑指offfer面试题1:字符串赋值运算符重载函数

题目:以下是类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{public: CMyString(char* pData = NULL); CMyString(const CMyString& str); ~CMyString(void); CMyString& operator=(const CMyString& str

2018-01-02 18:35:11 361

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除