自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

stary_yan的博客

数据爱好者。

  • 博客(41)
  • 收藏
  • 关注

原创 [C++]List with iterator(链表的迭代器实现)

List with iterator(链表的迭代器实现)我们都知道STL容器内部都有相应的迭代器,本文主要讨论的就是链表内部的迭代器实现。测试代码#include <iostream>#include <string>using namespace std;int main() { list<int> li; cout << "test size" << endl; c

2016-05-30 16:21:34 8267 2

原创 [SQL]语法总结

SQL语法1.数据库表mysql> use RUNOOB;Database changedmysql> set names utf8;Query OK, 0 rows affected (0.00 sec)mysql> SELECT * FROM Websites;+----+--------------+---------------------------+-------+--------

2016-05-26 21:13:02 739

原创 [C++]数据永久化-下篇(使用数据库)

数据永久化(使用数据库)上一篇文章《数据永久化(不使用数据库)》是基于不懂得数据库而完成的。实际上可以做到非常不错的效果,只是可视化做的不好,数据也没有办法方便的修改。此文我们给个进阶版,C++程序中调用数据库,从而完成数据的永久化。实际上并不难。设备前提首先当然是要有mysql。以及配置好mysql。之前的文章介绍了如何在mac上配置数据库。 在terminal上输入:PATH="$PATH":

2016-05-26 18:23:29 424

原创 [mac]xcode配置说明--gtest&mysql

xcode配置本文介绍如何在mac上引入gtest和mysql两个工具。这是我最近做项目所需要的东西,研究了很久,最后终于解决了,在这里给大家介绍以下~gtest在Xcode上配置如下: 把gtest里面编译好的两个静态文件放在gtest文件夹里面。就可以进行gtest测试了:#include <stdio.h>#include "gtest/gtest.h"TEST(MyFirstTest,

2016-05-26 10:43:44 1187

原创 [c++]Xcode配置gtest

Xcode配置gtest1、准备工作: gtest:gtest github 下载,本人下载最新版1.7.0。2、打开gtest文件夹,在XCODE文件夹中打开工程,编译:     (1)architectures选项选择universal。编译结束后会出来三个文件:一个framework,两个.a静态库文件 3、新建工程,我测试用的是控制台程序。由于控制台无法加载framework,因此引入

2016-05-25 11:46:40 1760

原创 [C++]初识google test--单元测试神器

初识google testgtest是google的一个开源项目,专门用来做单元测试的。学习难度不算非常的大,适用于多个平台。主要就是使用断言来判断代码的正确性。在google test这个github中可以下载gtest的源码,并且在文件中有make文件夹,可以用terminal,make产生可执行文件,实际上在makefile里面写出了编译成可执行文件所需要的代码。可以打开这个文件改变其中的文件

2016-05-24 23:35:40 2904

原创 [C++]关于数据永久化的思考(不使用数据库)

关于数据永久化的思考(不使用数据库) ==数据永久化==是一个程序很重要的特性。我们知道使用数据库肯定可以实现数据永久化,但对于新手而言,比较艰难。本文讨论的是,如何不使用数据库来完成数据的保存。主要提供两种方法,一种是使用纯粹的文件读写,另一种使用json。首先,我们先来复习一下文件操作的基本信息。C++文件操作文件指存放在外部介质上的数据的集合。大家都知道操作系统是以文件为单位来对数据进行

2016-05-23 20:34:36 6274 1

原创 [C++]关于重载运算符的一些建议

运算符1. 谨慎定义类型转换函数有两种函数允许编译器进行这些的转换:单参数构造函数(single-argument constructors)和隐式类型转换运算符。单参数构造函数是指只用一个参数即可以调用的构 造函数。该函数可以是只定义了一个参数,也可以是虽定义了多个参数但第一个参数以后的 所有参数都有缺省值。 第一个例子:class Name {public: Name(const stri

2016-05-23 00:22:05 5096

原创 C++重要议题

C++重要议题 本文讨论c++中的pointer、reference、cast、array、constructor。他们虽然简单,但却有非常重要作用,而且很容易被误用。1. 指针和引用的区别指针:使用(*和->)可以指向空值。不一定要被初始化可以改变指向对象。引用:使用(.)不能指向空值。一定要被初始化。不能改变指向对象。因为他们的特性,可能会出现这样的代码:char *p

2016-05-22 18:00:23 413

原创 [C++]stack源码解析

stack源码解析 stack是默认使用deque(双头队列)来实现的。实际上如果使用结构体指针也是可以做到相同功能的。以下提供stack源码。重点学习其头文件的写法。首先补充一点知识:enabled_if:template <bool Cond, class T = void> struct enable_if;Enable type if condition is metThe typ

2016-05-21 11:51:55 3936

原创 [C++]using语义使用说明

using语义使用说明1. 引入命名空间 using namespce std;但实际上在真正做工程时是不允许使用这种方法的。更常见的方法应该是:using std::cout;using std::endl;2. 在子类中使用 using 声明引入基类成员名称这是最为常用的方法。在private或者protected继承时,基类成员的访问级别在派生类中更受限:class Base {
p

2016-05-21 08:48:03 710

原创 [C++]Json 学习笔记

Json 学习笔记 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(

2016-05-21 01:02:29 14380 5

原创 [C++]bitset特殊用法

bitset特殊用法 本文我们介绍一个用bitset来解决特殊的问题。问题产生Give you N numbers a[1]…a[n] and M numbers b[1]…b[m] For each b[k], if we can find i,j  a[i] + a[j] = b[k] or a[i] = b[k] , we say k is a good number. And y

2016-05-20 17:25:20 2675

原创 [C++]广度优先搜索(含C++模板)

广度优先搜索(含C++模板) 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。概述BFS,其

2016-05-20 17:17:37 8436

原创 Shell 命令总结

Shell 命令总结1、ls: 类似于dos下的dir命令ls最常用的参数有三个: -a -l -F。ls –aLinux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来。ls –l该参数显示更详细的文件信息。ls –F使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这

2016-05-19 13:11:13 2398

原创 [C++]STL-空间配置器(一)

空间配置器 从STL的实现来说,首先需要明白的就是空间配置器,因为整个STL的操作对象都放在容器中,而容器需要一定配置空间以置放资料。空间配置器的标准接口// 标准接口,一些typedefallocator::value_type;allocator::pointer;allocator::const_pointer;allocator::reference;allocator::

2016-05-18 19:16:38 1221 1

原创 [C++ && Python]简单模拟代码评测系统

简单模拟代码评测系统 本实现版本使用python调用系统命令(compiler.py)完成代码的编译,输入,输出,用judge.cpp程序判断测试文件与标准程序之间的输入是否有差别,从而判断是否为正确程序代码。但这里还有一个问题,就是没有随机生成的输入内容,这个部分需要自己编写。此程序大概简化模拟了eden评测系统的原理。对于平时研究自己的代码与网络代码之间的正确与否有一定的帮助。 代码下

2016-05-18 13:27:01 1230

原创 [C++] 构造/析构/赋值运算

构造/析构/赋值运算1. 了解C++默默编写并调用哪些函数当你声明了一个empty class时,编译器会自动为你完成copy构造函数,copy assignment操作符和析构函数,如果你没有声明任何构造函数,还会自动声明default构造函数。并且这些函数都是public且inline。但是,当你的class中出现了引用或const的成员变量时,编译器不再为你完成copy assignmen

2016-05-17 16:27:40 546

原创 [C++]最小生成树--Prim算法&Kruskal算法

最小生成树–Prim算法&Kruskal算法 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。(from 百度百科)Prim算法此算法采用贪心算法的思想,运行时间为O( n^2 )。算法描述基本步骤:设R是有n个定点的对称连通关系。1)选取R的一个

2016-05-16 20:24:12 27713 2

原创 [C++]Random库--正态分布

Random库–正态分布背景介绍 正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。若随机变量X服从一个数学期望为μ、方差为σ^2 的高斯分布,记为N(μ,σ^2 )。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。因其曲

2016-05-14 18:49:32 8346

原创 [C++]内存管理器--谈论如何自定义内存分配机制

内存管理器–谈论如何自定义内存分配机制 Memory pools, also called fixed-size blocks allocation, is the use of pools for memory management that allows dynamic memory allocation comparable to malloc or C++’s operator new.

2016-05-14 09:16:41 6012 1

原创 [C++]Json介绍

Json介绍 JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。什么是JSON引言:{"employees": [{ "firstName":"Bill" , "lastName":"Gates" },{ "firstN

2016-05-13 23:20:59 730

原创 [C++]时间复杂度&空间复杂度

时间复杂度&空间复杂度 时间复杂度是算法分析中常用的方法。他给出了数学方法来分析算法的执行效率。本文讨论如何计算时间复杂度,并给出相应的实例。而空间复杂度则是一个程序所消耗的内存成本。这两个直接决定一个程序的运行效率以及一个算法是否高效。时间复杂度定义时间频度时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知

2016-05-12 13:43:49 8678 1

原创 [C++]Vector源码实现

Vector源码实现 vector是STL里最常用的容器,本文尝试着用一种相对简单的方法构建一个vector实现模板,并加上std::allocator。尽可能解释其中函数的意义。代码实现用一个testAllocator继承allocator。此处特化int版本。#ifndef __TEST_H__#define __TEST_H__#include <memory>#include <i

2016-05-11 11:43:09 3461

转载 git远程操作

git远程操作Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能。 Git有很多优势,其中之一就是远程操作非常简便。本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作。git clonegit remotegit fetchgit pullgit push本文针对初级用户,从最简单的讲起,但是需要读者对Git的基本用法有所了解。

2016-05-11 00:02:19 303

原创 [C++]二叉树应用--Huffman code

二叉树应用–Huffman code 赫夫曼(Huffman)树又称最优二叉树或最优搜索树,是一种带权路径长度最短的二叉树。背景知识首先我们先讨论何为Huffman code。Max-Path of TreeGiven a binary tree, every node has a weight, then you need to find out the path that can make

2016-05-10 19:43:08 1550

原创 [C++]封装排序二叉树&随机数生成(c++11)

封装排序二叉树&随机数生成(c++11)本文,我尝试着把排序二叉树封装为一个模板类,并且用C++11给出的随机数生成函数来对这个类进行测试。排序二叉树封装 这个二叉树的特征是,左子数的值肯定比父节点小,右子树的值肯定比父节点的大。要求大家按照这个结构特征去构建二叉树,最后中序遍历输出就是我们要求的升序输出。我们可以根据具体的要求来完成对排序二叉树的构建,可以用一个bool函数来区别不同排序顺序

2016-05-09 13:41:10 1594

原创 [C++]二叉树总结

[C++]封装二叉树题目要求(简单的说,就是把二叉树的功能封装起来)binary tree is a tree data structure in which each node has at most two children, which are referred to as the left child and the right child.Three Constructor:creat a

2016-05-08 20:17:18 2376

原创 [C++]广度优先搜索(BFS)(附例题)

广度优先搜索(BFS)(附例题)问题产生:Isenbaev是国外的一个大牛。现在有许多人要参加ACM ICPC。一共有n个组,每组3个人。同组的3个人都是队友。大家都想知道自己与大牛的最小距离是多少。大牛与自己的最小距离当然是0。大牛的队友和大牛的最小距离是1。大牛的队友的队友和大牛的最小距离是2……以此类推。如果实在和大牛没有关系的只好输出undefined了。第一行读入n。表示有n个组。1 ≤

2016-05-08 14:16:51 35289 4

原创 Python 文件操作总结

Python 文件操作总结文件操作close()概述close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。 当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。语法close() 方法语法如下:

2016-05-07 23:59:50 3480

原创 [C++]OOP编程基本准则

让自己习惯C++1. 视c++为一个语言联邦C++是一个由相关语言组成的联邦而非单一语言。其中包括:C。内置数据结构等…Object-Oriented C++.包括class, encapsulation(封装), inheritance, polymorphism, vitual function….面向对象的古典守则。Template C++. The important part of

2016-05-07 13:42:18 691

原创 [Python]Python 经典例题

Python 经典例题1题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。#!/usr/bin/python# -*- coding: UTF-8 -*-from sys import stdoutfor j in range(2,1001): k = [] n = -1 s = j for i in

2016-05-07 00:00:17 27863 2

原创 [C++]定制new和delete

定制new和delete 本文讨论C++内存管理的例程行为,此行为的主角是分配例程和归还例程,配角是new-handler,这是当operator new无法满足客户的内存需求时所调用的函数。了解new-handler的行为当operator new抛出异常以反映一个未获满足的内存需求之前,它首先会调用一个客户指定的错误处理函数,所谓的new-handler。客户可以指定set_new_han

2016-05-05 11:46:25 760

原创 [Python]经典教程

Python 简介Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。Python 是交互式语言: 这意味着,您可以在一个Python提示符,直

2016-05-04 22:57:37 1764

原创 C++智能指针 unique_ptr

C++智能指针 unique_ptr概念unique_ptr“唯一”拥有其所指对象,同一时刻只能有一个unique_ptr指向给定对象(通过禁止拷贝语义、只有移动语义来实现)。unique_ptr指针本身的生命周期:从unique_ptr指针创建时开始,直到离开作用域。离开作用域时,若其指向对象,则将其所指对象销毁(默认使用delete操作符,用户可指定其他操作)。unique_ptr指针与其所指对

2016-05-04 16:00:23 861

原创 [C++]模板与泛型编程

模板与泛型编程 本文尝试着介绍对泛型编程的理解,从而扩展我们的template编程。泛型编程是C++中非常重要的一部分,它使得我们节省了很多编写不同代码的体力。1. 了解隐式接口和编译器多态与OOP的不同之处面向对象编程世界总是以显式接口和运行期多态解决问题。例如:void doProcessing( Widget &w) { if (w.size() > 10 && w != som

2016-05-04 11:56:21 3901

原创 C++11:匿名函数(lambda函数/表达式)及其用法

C++11:匿名函数(lambda函数/表达式)及其用法C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下:[capture](parameters)->return-type{body}如果没有参数,空的圆括号()可以省略.返回值也可以省略,如果函数体只由一条return语句组成或返回类型为void的话.形如:[capture](p

2016-05-03 23:37:36 2140 1

原创 C++11新标准特性介绍

C++11新标准特性介绍C++简介C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外)。C++11包括大量的新特性:包括l**ambda表达式,类型推导关键字auto、decltype,和模板的大量改进**。本文将对

2016-05-03 17:44:09 545

原创 [C++]继承与面向对象设计

C++设计模式(避免virtual函数) 本文讨论C++中一些特别的设计模式来避免使用virtual函数。(因为调用virtual函数的开销比较大。)假设我们现在要设计一个游戏,为这个游戏内的人物设计一个继承体系。class GameCharacter {public: virtual int healthValue() const; // 会有一个算法来计算。 ...}

2016-05-02 19:45:19 428

原创 [C++]继承与面向对象设计

继承与面向对象设计 OOP是C++中十分重要的一个课题,本文尝试着解释C++各种不同特性的真真意义,也就是当你当用某个特定构件你真正想要表达的意思。1. 确定你的public继承塑模出is-a关系 以C++进行面向对象编程,最重要的一个规则是:public inheritance意味“is-a”的关系! 如果你令class D(“Derived”)以public继承class B(B

2016-05-01 20:41:12 3529

空空如也

空空如也

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

TA关注的人

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