C++面向对象

概述

面向对象编程基于三个基本概念:数据抽象继承动态绑定。在C++中,用类进行数据抽象,用类派生从一个类继承基类的成员。动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。
继承和动态绑定在两个方面简化了程序:

  1. 能够容易地定义与其他类相似但又不同的新类;
  2. 能都更容易地忽略这些相似类型之间区别的程序。

继承

通过继承可以实现类型之间的建模,共享公共的东西,仅仅特化本质上不同的东西。派生类可以继承基类定义的成员,派生类可以无需改变而使用那些与派生类型具有特性不相关的操作,派生类可以重定义那些与派生类相关的成员函数,将函数特化,考虑派生类型的特性。派生类还可以定义更多的成员。

More

最小二乘学习法

最小二乘学习法是回归中最为基础的方法。

我们以$d$维实向量$\boldsymbol{x}$作为输入、以实数值$y$作为输出的函数$y=f(x)$的学习问题进行说明。这里的真实函数关系$f$是未知的,通过训练样本$\{({x_i}, y_i)\}_{i=1}^{n}$对其进行学习,一般情况下,输出样本$y_i$的真实值$f(x_i)$中经常会观测到噪声。

More

Count of Smaller Numbers After Self

题目描述

在一个整数序列中,统计每个元素其右边的元素中比本身小的元素个数,并返回。题目来源leetcode

本题需要注意两点:元素均为整数,元素可能重复。

例子:

给定 nums = [5, 2, 6, 1]

  • 5右边有两个更小的数 (2 , 1).
  • 2右边有两个更小的数(1).
  • 6右边有两个更小的数(1).
  • 最右边的数没有比它小的数.

返回序列 count = [2, 1, 1, 0]。

More

Arithmetic Puzzles

Arithmetic Puzzles:给定一个由字母组成的等式,其中每一个字母表示一个数字。不同字母表示的数字一定不同。问字母和数字之间是否存在一一对应关系,使得等式成立。若存在多种方案输出按字母顺序排列后字典序最小的解。

比如 SEND+MORE=MONEY 的一个解为 9567+1085=10652。

More

auto 与 decltype

本文将介绍C++11中两个与类型有关的关键字,autodecltype ,以及C++11中新提出的类型推导的概念。

1 auto

说到C++11的新特性,从使用方便的角度,不得不提的就是auto。auto在C++11中与C++98中完全是两种概念。在C++98中是一种存储类型指示符(storage-class-specifier,如static、extern、thread_local等), 而在C++11中是一种新的类型指示符(type-specifier, 如int, float, char等)。只是,auto声明变量的类型必须由编译器在编译时期推导而得。另一个与类型有关的则是 decltype,下面分别介绍这两个关键字的用法。

More

Machine Learning 概览

近些年来,得益于互联网的普及,我们可以非常轻松地获取大量文本、音乐、图片、视频等各种各样的数据。机器学习,就是让计算机具有像人一样的学习能力的技术,是从堆积如山的数据(大数据)中寻找有用知识的数据挖掘技术。通过运用机器学习技术,从视频数据库中寻找自己喜欢的视频资料,或者根据用户购买记录向用户推荐其他相关产品等成为了现实。接下来从宏观的角度对什么是机器学习做相应的介绍,并对机器学习的基本概念进行说明。

More

Additive Number

Source

Additive number is a string whose digits can form additive sequence.

A valid additive sequence should contain at least three numbers. Except for the first two numbers, each subsequent number in the sequence must be the sum of the preceding two.

For example:
“112358” is an additive number because the digits can form an additive sequence: 1, 1, 2, 3, 5, 8.
1 + 1 = 2, 1 + 2 = 3, 2 + 3 = 5, 3 + 5 = 8

“199100199” is also an additive number, the additive sequence is: 1, 99, 100, 199.
1 + 99 = 100, 99 + 100 = 199

Note: Numbers in the additive sequence cannot have leading zeros, so sequence 1, 2, 03 or 1, 02, 3 is invalid.

Given a string containing only digits ‘0’-‘9’, write a function to determine if it’s an additive number.
More: leetcode

More