- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 动态规划_背包问题
01背包问题有N件物品和一个容量为V的背包。(每种物品均只有一件)第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。未优化版本:for (int i=1;i<=n;++i) { for (int j=v;j>=0;--j) { if(c[i]<=j)//如果当前物品可以放入当前空间的背包 f[i][j]=max(f...
2018-03-31 13:49:11 272
原创 c++类成员的函数指针
#include<iostream>#include<string>using namespace std;class MyClass{public: int a = 55; static void go(){ cout << "2" << endl; } void pr(){ cout << a <..
2018-03-26 00:15:25 134
转载 Http协议与TCP协议简单理解
原文地址:https://blog.csdn.net/sundacheng1989/article/details/28239711在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解。TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。...
2018-03-25 19:28:02 105
转载 友元与模板类
友元成员函数模板:#include <iostream>using namespace std;template<class T> class A; //当用到友元成员函数时,需注意友元声明与友元定义之间的互相依赖。这是类A的声明template<class T>class B{public: void set_show(int x, A...
2018-03-24 09:28:28 402
原创 类模板当作一个类模板的模板参数
#include<iostream>#include<string>using namespace std;//类模板当作一个类的参数//设计STL时候用到//面试,类模板当作参数class MyClass{public:private:};template<class T>class MyClass2{public: T...
2018-03-24 09:25:08 2115
原创 友元函数&虚函数
被友元的虚函数,是可以被继承的三个类Myclass,Myclass2,son,Myclass对Myclass2的set函数友元,son继承Myclass2,如果son不重写set函数,而是直接继承Myclass2的set,是可以操作Myclass私有属性的。#include <iostream>using namespace std;class MyClass;class My...
2018-03-21 09:34:50 3622
原创 恶心的函数指针
(┬_┬)我是一个函数我叫Register,我的参数是一个函数指针他长这样(int(*)(const char *, const char *)),我的返回值类型是一个函数指针,他长这样(int(*)(const char *, const char *))下面就是我#include<iostream>int fun(const char *, const char *){ re...
2018-03-20 19:04:34 234
转载 解决hash冲突的三个方法
目录开放定址法线性探测再散列二次探测再散列伪随机探测再散列再哈希法链地址法建立公共溢出区优缺点开放散列(open hashing)/ 拉链法(针对桶链结构)封闭散列(closed hashing)/ 开放定址法通过构造性能良好的哈希函数,可以减少冲突,但一般不可能完全避免冲突,因此解决冲突是哈希法的另一个关键问题。创建哈希表和查找哈希表都会遇到冲突,两种情况下解决冲突的方法应该一致。下面以创建哈希...
2018-03-20 11:27:06 372
转载 虚函数原理
看了一下虚函数,原理不难理解,反倒最后的二维数组看不懂了,回顾一下二维数组的遍历概念二维数组:二维数组的第一个[]等于每一个指向一维数组地址的指针(行指针),第二个[]等于指向数据的指针。二维数组遍历方式:void func3(int (* p)[3], int row, int col){ for(int i=0; i<row; ++i){ for(int ...
2018-03-19 14:06:08 217
转载 纯C语言简单模拟C++的虚函数表
原文:http://blog.csdn.net/smstong/article/details/50669732多态,面向接口编程等设计方法并没有绑定到任何特定的语言上,使用纯C也可以实现简单的多态概念。下面给出一个非常简单粗糙的例子,只为说明概念。父类Animal定义 文件:animal.h#ifndef ANIMAL_H#define ANIMAL_H/* 方法表, 类似于C++的虚函...
2018-03-19 06:36:04 957 1
原创 c++重载箭头运算符
一句话:对箭头的返回值做->操作,如果返回值重载了->则调用重载的。 a)如果返回的是一个指针将调用内置的箭头运算符。执行相当于(*(p.operator->()).mem;的操作。 b)如果返回是一个重载了箭头运算符的对象,则继续对该对象调用其重载了的箭头运算符,直到返回的是一个指针,将对该指针调用a)的操作。操作相当于(*(p.operator->()....
2018-03-18 04:52:31 355
原创 get请求URL编码2次
中文->url按照编码为utf-8转换->对utf-8再次转换,转换成ascii;服务器接受->自动url解码iso-8895-1一次ascii变utf-8->后台对utf-8解码,得到中文。
2018-03-17 23:18:54 911
原创 对于C/C++,java的volatile关键字的个人理解
C/C++中的volatile是禁止编译器对变量的操作进行优化,每次读取需要从内存读取,不允许从cpu缓存或者寄存器中取值。参考文章:http://blog.csdn.net/qq_29350001/article/details/54024070java中volatile有主要2个功能第一个,禁止重排序,在变量前与变量后的语句即使重排序也不会交换到变量的前面或者后面。int a=1;//可能与b...
2018-03-17 15:11:26 834
原创 java与c++运算符优先级
int x = 1; int y = 1; int sum = x + y + (--y * 2);求上面代码sum的值c++的自增自减运算符优先级最高所以是x(1)+y(0)+(0*2);java并不是这样的,自增自减运算符跟+号是平级的,所以从左到右,因为是表达式相加,所以从左到右是x(1)+y(1)+(0*2);...
2018-03-16 05:24:38 209
转载 typename的历史及用法
typename有2个用法1标明其后的模板参数是类型参数2模板中标明“内嵌依赖类型名”主要作用就是消除歧义下面这个会产生歧义,加了typename编译器就会认为是个内嵌依赖类型。从而不会出现template <class T>void foo() { T::iterator * iter; //不写typename 有可能解析为T类的静态变量iterator 假如iterat...
2018-03-13 22:55:15 215
原创 c++可变参数完美转发
c++语法真的怪异看线程源码的时候看到一段template<class _Fn, class... _Args> explicit thread(_Fn&& _Fx, _Args&&... _Ax) { // construct with _Fx(_Ax...) _Launch(&_Thr, _STD bind(_Deca...
2018-03-13 20:58:56 3265 2
原创 c++ref()函数
使用std::ref可以在模板传参的时候传入引用,否则无法传递#includetemplatevoid com(T arg){ std::cout <<"com ="<< &arg << "\n"; arg++;}void main(){ int count = 10; int & rcount = count; com(count); std::cout <<
2018-03-13 07:41:11 8938
原创 c++函数包装器
类似于jdk的动态代理一样,其实只是一个函数接受一个函数指针调用一下...#include<iostream>#include<functional>using namespace std;template<typename T, typename F>T run(int a,T v, F f)//代理类{ std::cout << "执...
2018-03-12 07:29:32 471
原创 关于一道cout题目
最终输出什么?#include<iostream>#include<stdlib.h>int main(){ int a = 1; std::cout << (a++) << (a++) <<(a++) ; system("pause"); return 0;}一开始是认为输出123,运行后发现输出321搜了...
2018-03-11 05:29:25 158
转载 ST算法(求区间最值)
原文:http://blog.csdn.net/niushuai666/article/details/66246721. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们
2018-03-02 17:38:43 561
原创 获取浮点后指定位数以及转换为二进制
#define _CRT_SECURE_NO_WARNINGS//关闭安全检查#include#includeint main(void){ double i = 0.01517; double ii = i; for (int j = 1; j < 10; j++,ii=ii*10.0){ //10位 int a = ii * 10; printf("%d", a
2018-03-01 23:30:02 243
转载 使用栈实现快排,斐波那契,汉诺塔
原文地址:http://blog.csdn.net/chinainvent/article/details/1317024(写的特别好)原文地址:http://blog.csdn.net/gf426326/article/details/77983197快排:#include #include #include #include #include #include //快速
2018-03-01 19:21:28 943 1
转载 c全排列解法(非递归)
只要对字符串求出字典序即可实现全排列求法:要考虑全排列的非递归实现,先来考虑如何计算字符串的下一个排列。如"1234"的下一个排列就是"1243"。只要对字符串反复求出下一个排列,全排列的也就迎刃而解了。如何计算字符串的下一个排列了?来考虑"926520"这个字符串,我们从后向前找第一双相邻的递增数字,"20"、"52"都是非递增的,"26 "即满足要求,称前一个数字2为替
2018-03-01 01:59:34 812
typora之Visual Studio风格主题
2022-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人