- 博客(51)
- 收藏
- 关注
原创 C++ 左值变右值
template<class T>struct MyRemoveRef{ typedef T type;};void static_cast_test(){ std::string str = "hello"; std::string str1 = "hello"; std::string str2 = "hello"; std::string str3 = "...
2019-12-16 16:57:38 781
原创 python 引用问题
# -*- coding: utf-8 -*-#在序列化前 魔法属性已经被构造出来。所以里面的字典得不到更新class A(): def __init__(self, a): self.d = adata = {}wrong = A(data)data = {1:2}print wrong.dright = A(data)data
2018-01-18 15:48:12 296
原创 知识误区-C++头文件
//H1.h#include void func1();void func2();//S_1.CPP#include "H1.h"void func1(){ printf("func1\n");}//S_2.CPP#include "H1.h"void func2(){ printf("func2\n");}//main.cpp#include "H1
2017-10-17 16:16:25 237
原创 python函数调用的四种方式
# -*- coding: UTF-8 -*-def normal_invoke(x, y): print "--normal_invoke:--" print "x is %d" %x print "y is %d" %ydef keyword_invoke(x, y): print "--keyword_invoke--:" print "x is %d" % x print
2017-10-09 10:40:04 6444 1
原创 python初识iter
#自己的类如果实现了iter方法,就可以使自己的产生的实例是可迭代的,#调用__iter__()方法(for将自动调用对象的iter方法活的迭代器),返回自己的迭代器import collectionsclass hello_iter: def __init__(self): self.__data = collections.deque("abcdefg")
2017-01-03 16:43:24 502
原创 C++ lambda入门
#include#include#includeusing namespace std;/* lambda表达式: [capture](parameters)->return_type {body} ----- -------- ---------- --- 捕捉式 传入的参数 返回类型 函数体 1.捕捉式:lambda的开头,[=],
2016-11-19 17:00:44 319
原创 (小米笔试)打乱字符串还原
#include #include int need[10][26];void init() { char str[10][6] = { "ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE" }; int i, j; for (i = 0; i < 10; i++) { for (j = 0;
2016-09-23 21:56:01 2295
原创 Item09 绝不在构造和析构过程调用virtual函数
//Item09 绝不在构造和析构过程调用virtual函数#include class base {public: base() { printf("base\n"); f(); } virtual void f() = 0 { printf("base::f\n"); }};class drived :public base {public: drived()
2016-09-21 22:32:51 281
原创 strcpy函数
#include #include /*attention:1.检查代码的健壮性。(判断两个指针是否为空)2.NULL可以写在左边,防止少写=。3.保存头指针是为了链式调用 ex:strlen(strcpy(a,b));*/char *strcpy1(char *dest, char *src) { assert((dest != NULL) && (src != NULL)
2016-09-21 22:32:14 710
原创 关于重载赋值操作符需要返回引用
#include /* 如果赋值操作符不返回引用代码也能编译通过 但会增加调用copy构造函数的开销(因为返回局部对象会调用拷贝构造函数)。 返回引用的话能减少调用copy构造函数 (effective Item10)*/class A {public: A &operator=(const A& rhs) { printf("operator:%d\n", this-
2016-09-21 21:04:06 1372
原创 函数模板全特化与特殊的偏特化
//类模板的全特化和偏特化#include #include templatevoid f(T1 a1, T2 a2) { std::cout << "function template" << std::endl; std::cout << a1 << std::endl; std::cout << a2 << std::endl;}template <>void f(dou
2016-09-21 19:17:24 530
原创 类模板的全特化和偏特化
#include #include templateclass A {public: A(T1 self_str1,T2 self_str2) { printf("类模板:\n"); std::cout << self_str1 << std::endl; std::cout << self_str2 << std::endl; printf("\n"); } ~A(
2016-09-21 16:29:29 1265
原创 虚函数调用示例程序
#include class base {public: base() { f(); printf("base\n"); } virtual void f() { printf("base::f()\n"); } virtual void t() { printf("base::t()\n"); f(); }};class subtype:public ba
2016-09-19 21:55:25 340
原创 初识bitset
#include using namespace std;/* 不够32,使用无符号 int 超过32,每多一个需要在后面添加一个无符号long long 所以后面递增8*/int main() { bitset bit; bitset bit2; printf("32bit_length:%d\n",sizeof(bit));//4 8 16 24 32 40 printf
2016-09-19 21:07:58 294
原创 关于dynamic_cast
dynamic_cast操作符是将以指向子类的父类指针转化为子类指针,或者将父类引用转化为子类引用。区别在于对于指针,转化失败会返回0。而对于引用,因为不存在空引用(引用必须被初始化),如果转换失败则会返回一个bad_cast的异常还有就是进行转化的指针必须具有多态,没多态也就不存在虚表,编译器无法进行判断。#includeclass A {public: A() { print
2016-08-19 00:26:17 435
原创 python socket模拟一个http Get请求页面
#python socket模拟一个http Get请求页面(请求实验室主机(局域网))#利用wireshark仿照写出request的请求,http要求比较严格少了一些东西都不能进行成功的访问import socketse = socket.socket(socket.AF_INET,socket.SOCK_STREAM)host=" /jobrecord/login/index.
2016-06-15 16:48:22 6024
原创 矩阵中的路径
// 矩阵中的路径.cpp : 定义控制台应用程序的入口点。// 题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。// 路径可以从矩阵中的任意一个格子开始,// 每一步可以在矩阵中向左,向右,向上,向下移动一个格子。// 如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 // 例如 a b c e s f c
2016-05-02 17:47:29 391
原创 剑指offer:正则式匹配
// 正则表达式.cpp : 定义控制台应用程序的入口点。//题目描述:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 // 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配//解题思路:通
2016-04-12 15:19:17 297
原创 剑指offer:删除重复的节点
// 删除链表的重复节点fanal.cpp : 定义控制台应用程序的入口点。//题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,// 重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5//解题思路:先在草稿纸上画出几种可能的情况(头结点可能会改变的情况),分析后可知,需要三个指针//
2016-04-11 11:35:56 360
原创 剑指offer:字符串的排列
// ConsoleApplication5.cpp : 定义控制台应用程序的入口点。//题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c//所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。//解题思路:深度搜索,在每层搜索里设置一个a数组映射所有字符,每个字符在这层循环中只能使用
2016-04-05 10:41:10 266
原创 剑指offer:顺时针打印矩阵
//题目描述:给定一个矩阵按照顺时针顺序从外到内的打印这个矩阵//解题思路:设置一个全局的方向矢量dir其中的顺序是向右,向下,向左,向上// 每次给行加上一个方向矢量,当出现越界或者已经打印过的时候重新选择方向vector printMatrix(vector > matrix) { int dir[4][2]={{0,1},{1,0},{0,-1},{-
2016-04-04 13:37:59 305
原创 剑指offer:滑动窗口的最大值
a//题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,// 如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们// 的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: // {[2,3,4],2,6,2,5,1}, {2,
2016-04-02 19:46:15 605
原创 剑指offer:找到二叉树中序遍历的下一个节点
//题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。 //注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 //思路:分为三种情况: //1.处理没有父亲节点,即根节点情况,找右子树的最左孩子 //2.自己是父亲的左子树输出父亲 //3.自己是父亲的右子树分为两种情况 // 3-1:自己有右孩子,输出
2016-04-02 17:09:26 2147
原创 剑指offer:构建乘积数组
//题目描述:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1], // 其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 //题目思路:通过正反两次来求B // 正着:B[i]=A[0]*...A[i-1] //
2016-04-02 16:11:45 622
原创 剑指offer:找出数组中重复的数字
//题目描述:输入一个数组,找出其中重复的数字// 思路:利用map对数组的数字进行计数,找到不等于map中计数不为1的数字输出bool duplicate(int numbers[], int length, int* duplication) { if (length == 0) return false; map ma; int i; for (i = 0; i<lengt
2016-04-02 15:27:28 529
原创 剑指offer:扑克牌顺子
// 剑指offer_扑克牌顺子.cpp : 定义控制台应用程序的入口点。// 题目描述:输入五个数字,0可以代表任何数,问这五个数字是否是一个顺子// 思路: 排序后计算非0的相邻两个数之间的距离(gap),然后与0(大小王)的数量进行比较,看是否小于这个count#include "stdafx.h"#include"vector"using namespace std;
2016-04-02 15:14:24 374
原创 剑指offer:平衡二叉树
// 平衡二叉树_判断是否是平衡二叉树.cpp : 定义控制台应用程序的入口点。//题目描述:判断一棵树是否是平衡二叉树// 思路:求得每个节点的高度,递归的进行子树判断看是否是平衡二叉树#include "stdafx.h"struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x)
2016-04-02 14:42:14 358
原创 剑指offer:重建二叉树
// 重建二叉树2.cpp : 定义控制台应用程序的入口点。//题目描述:输入一个二叉树的前序遍历和中序遍历,输出这颗二叉树// 思路:前序遍历的第一个节点一定是这个二叉树的根节点,这个节点将二叉树分为左右子树两个部分,然后进行递归求解#include "stdafx.h"#include"vector"using namespace std;struct TreeNode
2016-04-02 13:58:44 233
原创 二叉搜索树与双向链表
// 排序二叉树与双向链表.cpp : 定义控制台应用程序的入口点。// 题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。// 思路:通过对一颗排序二叉树的认识可知一颗排序二叉树中序输出就是有序的// 通过后序遍历让子树分别找到自己的left和right结点,然后再与根节点相结合,// 结合
2016-04-02 12:44:12 308
原创 剑指offer:复杂链表的复制
//剑指offer:复杂链表的复制(复制一个包含random域的链表,random域随机的指向链表中任意节点)//思路:先复制出链表的next结构并且将自己对应的值和自身放入map中// 再复制random域,通过将之前链表的random域的值取出来,然后去map中找新链表对应的结点,并赋值。// 注意不要错误的使用之前的链表节点。画图让思路更清楚。#include
2016-04-01 14:39:04 244
原创 剑指offer:输出二叉树和为某一值的所有路径
//剑指offer:搜索一个二叉树,并且把和为expectNumber的路径上的值输出void funcPath(TreeNode* root, int expectNumber, int currentSum, vector v, vector >& res) { currentSum += root->val; v.push_back(root->val); if (currentS
2016-04-01 13:53:27 311
原创 二叉搜索树的后序遍历序列
/* *题目描述: *输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 *如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 *思路:利用最后一个元素将树划分为左右两颗字树,根元素一定会比左子树大,比右子树小 * 对分的的左右字树进行递归判断。*/#include "stdafx.h"#include "vector"using
2016-03-31 10:50:52 250
原创 STL-Vector
// testVector.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;templateclass MyVector {public: typedef T value_type; typedef value_type* iterator; //其实迭代器就是传进来参数的指针,这样设计
2016-03-28 11:09:28 341
原创 统计一个数字二进制中一的个数。
//小技巧:将一个数字与本身减一相与,将会使其最右边的1变成0int NumberOf1(int n) { int numbers = 0; while(n!=0){ numbers++; n&=(n-1); } return numbers; }
2015-09-14 21:34:16 672
原创 统计一个数字在排序数组中出现的次数
int GetNumberOfK(vector data ,int k) { int low,high; int mid1,mid2; int res1,res2; res1=-1; res2=-1; low = 0; high=data.size()-1; while(
2015-09-11 22:16:10 1102
原创 判断R2是否为R1的子结构,递归实现
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { if(pRoot2==NULL) return 1; if(pRoot1 == NULL) return 0; if(pRoot1->val == p
2015-09-09 21:06:06 371
原创 EasyX开发的贪吃蛇简单版,还有很多bug没改
#include #include #include #include#define length_side 10struct point { int x; int y;}; struct snake { point p; snake *next;}; //蛇的结构体,左上角的坐标,以及下一个节点的未知snake *head = NULL; //蛇头
2015-09-02 15:02:22 545
原创 ASD控制的小球_EasyX教程作业
#include #include void main(){initgraph(640, 480);int x = 320;int y = 240;// 画初始图形setlinecolor(YELLOW);setfillcolor(GREEN);fillcircle(x, 240, 20); int xx=2;int yy=2;cha
2015-09-01 20:48:27 1517
原创 EasyX
#include #include void main(){initgraph(640, 480);int y = 80 ; int xx = 20;int yy = 20;for(int x=100;; x+=xx,y+=yy){// 绘制黄线、绿色填充的圆setlinecolor(YELLOW);setfillcolor(GREEN);
2015-09-01 20:12:59 735
原创 Python学习igraph
总结:学习一种全新的语言看官方的文档是真的很有帮助,这次我的大部分python代码的完成都是靠着igraph官方的API文档。官方API:http://pythonhosted.org/python-igraph/igraph.Graph-class.html首先导入igraph工具包 from igraph import *(python语法)创建图 g = Grap
2015-06-10 17:30:02 9210 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人