- 博客(13)
- 收藏
- 关注
原创 leveldb-c++版本安装
主要是参照了这个链接[在Linux下编译Google leveldb数据库及在C++中操作示例]安装leveldbgit clone https://github.com/google/leveldb.git 下载leveldb,下载完成之后会生成levedb的文件夹。cd leveldb // 进入leveldb有如下的文件:2.make编译 编译之后结果: 其中,out-shared存
2017-06-30 14:30:11 1732
原创 经典造轮子-String类的实现
一个简单的版本#include <iostream>#include <cstring>class MyString{public: typedef size_t size_type;public: MyString(){} explicit MyString( int n, char ch = 0 ) : n_(n) { ptr_ = new char[n
2017-06-28 11:32:00 360
原创 c++函数explicit修饰符
本文参考了以下两篇博客:[C++笔记(1)explicit构造函数], [explicit在构造函数的使用 及 详解],只是对自己的学习做一个简要的记录。问题引入 explicit修饰符的作用是什么,什么时候用?explicit的主要用法就是放在单参数的构造函数中,防止隐式转换,出现歧义.因为,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应参数的数据类型的数据转换为该类对象。如下
2017-06-27 17:37:22 1109
原创 c++函数返回引用的问题
这两天写Vec时遇见返回引用的问题,觉得之前对这个问题的理解不够深入。所以,本文进一步讨论下我对这个问题的理解。 本文参考了[c++函数返回引用]一文,此文写的较为清楚,大家可以直接参看此文。问题引入重载Vec的[]运算符时的接口如下:T& operator[]( size_type i ) { return data[i]; }const T& operator[]( size_type i
2017-06-27 15:15:11 1065
原创 c++返回值优化的问题
本文总结以下我对返回值优化的学习,主要参考了下面这个链接的学习内容。 [C++中的返回值优化(RVO)]命名返回值优化(NRVO)二话不说,先上代码:#include <iostream>class A{public: A(){ std::cout << "Default constructor is called." << std::endl; } A( const A& rh
2017-06-16 14:34:24 599 1
原创 c/c++函数参数的入栈顺序和计算顺序
先给出本文参考的链接: [C/C++函数参数读取顺序 ] [关于c语言和c++中的函数参数的执行顺序的问题],裘宗燕老师的讲解非常准确。尤其是对于表达式计算,表达式的副作用,都有启发性的讲解。 [C++函数参数的入栈顺序]问题其实今天的学习始于这样一段代码的结果:#include <stdio.h>void foo( int x, int y, int z ){ printf( "%d
2017-06-15 11:06:27 1338
原创 linux相关-ubuntu使用ssh public key登陆
目前面临的情况时: 1.给了aliyun主机的 username@ip,但是没有密码。 2.给了public key所以,需要搞定ubuntu下ssh使用public登陆。网上的教程多半是在客户端和服务端都有的情况下进行。比较全的可以参看下面这两个: [Ubuntu使用ssh公钥实现免密码登录],[ubuntu系统使用SSH免密码登陆].。如果是我这种情形,那么证明服务端的public key
2017-06-14 13:15:27 4397
原创 剑指offer-二叉搜索树的后续遍历序列
问题题目:[二叉搜索树的后续遍历序列]思路这个题目我觉得还是不错的,自己期初没有想出来。 其实主要是要结合后续遍历的思路,序列中最后一个节点一定是根。然后此时,考虑BST的性质,左子树比根小,右子树比根大。所以前面的序列也是一部分比根小,一部分比根大。并且这两个序列都是完全连续的。这题另外一个总要思路就是对于树这种递归结构,最常见的解决办法是地柜的方法。代码class Solution {pub
2017-06-13 17:43:36 388
原创 剑指offer-从上往下打印二叉树
问题题目:[从上往下打印二叉树]思路二叉树的层次遍历,没什么好说的。代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};
2017-06-07 22:57:03 255
原创 定义一个只能在堆上(栈上)生成对象的类
#include <iostream>class A{public: A(){} void print(){ std::cout << "Hello, world!" << std::endl; } void destroy(){ delete this; }protected: virtual ~A(){ std::cout <&
2017-06-04 23:24:00 565
原创 剑指offer-合法的出栈序列
问题题目:[合法的出栈序列]思路这个题我模拟了,写的有点麻烦。 基本思路是考虑出栈序列,对于每一个出栈元素,进行模拟,因为如果当前元素要出栈,那么证明他以及他之前的元素都在栈内。所以,将之前的元素入栈即可。 可以写如下判断逻辑: 1.如果当前出栈元素在栈里面(其实用集合判断),只需判断栈顶和当前出栈元素是否一样。如果不一样,返回false. 2.如果当前出栈元素不在栈里面,只能是从入栈的序列
2017-06-01 21:13:07 327
原创 剑指offer-包含Min函数的栈
问题题目:[包含Min函数的栈]思路增加一个辅助栈,保存曾经的最小元素。 但是有一种情况要考虑,就是考虑这样的一个序列:[1,1,1,1,1] 全部都是最小值,如果每次判断只有小于的才入栈,那么会导致一个问题就是。如果出栈判断当前元素和辅助栈top一样就出栈,这样会导致最小元素都没了。所以,入栈的条件需要修改下。代码class Solution {public: void push(i
2017-06-01 20:05:44 240
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人