- 博客(35)
- 资源 (10)
- 收藏
- 关注
原创 STL中map/vector的删除元素操作
在我们使用C++中的STL的时候,可以使用迭代器iterator进行遍历,但是当我们通过iterator对vector和map删除元素的时候,要格外的小心,往往操作不当,导致iterator失效,后果就是程序奔溃。 1. 对于vector,erase会返回下一个iterator。所以一般采用的方法是: 因为在使用erase的时候,删除元素前面的iterator有效,但是后
2017-04-07 23:37:45
4843
原创 C++类的静态变量的初始化
C++类的静态变量注意事项:1.类的静态变量首先是存在于任何对象之外,它不属于任何一个类,所以对象中不包含任何与静态数据成员有关的数据。2.静态成员函数不与任何对象绑定在一起,它们不包含this指针。使用静态变量:1. 使用作用域运算符直接访问静态成员;2. 类的对象、引用和指针能够访问静态变量;定义静态成员:1. 类似于全局变量,静态变量一
2017-01-15 12:36:34
7619
1
原创 C++安全函数之strcat_s
C++安全函数之strcat_s1.必须包含的头文件:2.函数申明:errno_t strcat_s( char *strDestination, size_t numberOfElements, const char *strSource );3.参数介绍strDestinationNull 终止的目标字符串缓冲区。numberOfEl
2016-09-16 09:31:44
24952
原创 C++安全函数之strcpy_s
C++安全函数之strcpy_s1. 必须包含的头文件:2. 函数声明:errno_t strcat_s( char *strDestination, size_t numberOfElements, const char *strSource ); 3. 参数介绍strDestination目标字符串缓冲区的位置。numberOf
2016-09-16 09:11:46
28287
1
原创 C++之重写String类
C++之重写String类 有时候听完课程,不一定就能够领悟,所以还是要多加练习,今天在听了老师讲的C++关于类的构造函数,默认构造函数,类的拷贝函数(浅拷贝/深拷贝),类的析构函数,以及运算符的重载。感觉在课堂是听懂了,但是在自己编码的过程中还是遇到了很多的困难,但strcpy_s,strcat_s一些安全函数的使用,引用和传值的区别等等,以下是今天实现的代码:
2016-09-16 08:25:48
5475
转载 探讨C++中对象的“浅拷贝”与“深拷贝”
C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制:(1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如:
2016-09-15 23:50:44
330
原创 【C Primer Plus 第六版】笔记
1. 使用const 代替 #define 定义常量原因:(1)const 声明显示指明了类型;(2)const可以很方便的用于复合类型,比如是数组等;(3)作用域规则,const可以创建为全局,名称空间以及数据块的常量。2. 使用inline而不是#define 来定义小型函数3. 头文件 #pragma once 这是一个比较常用的C/C++杂注,只要在头文件的最开始加入
2016-09-15 21:25:08
2494
原创 namespace在大型项目中的使用
命名空间namespace namesapce命名空间是在大型项目开发中,为了避免命名冲突而引入的一种机制,比如说,在一个大型项目中,要用到多家软件开发商提供的类库。在事先没有约定的情况下,两套类库可能存在同名的函数或者是全局变量而产生冲突。项目越大,用到的类库越多,开发人员越多,这样的冲突也就越明显。 所以在C++中,为了避免这种问题的发生,引入了命名空间,namesp
2016-09-15 19:28:54
2104
转载 C语言之memset函数的使用
转自:老生常谈,正确使用memset本文归纳了下使用memset几个需要注意的地方,虽然内容很简单,但也希望对大家有所帮助。1. memset是以字节为单位,初始化内存块。当初始化一个字节单位的数组时,可以用memset把每个数组单元初始化成任何你想要的值,比如:char data[10]; memset(data, 1, sizeof(data));
2016-08-28 22:10:44
15686
转载 【排序算法】计数排序
转载来自:计数排序之Java实现计数排序算法介绍比较排序算法可以通过决策树模型证明,其下线是O(nlgn)。而本文介绍的是时间效率为O(n)的计数排序。所谓排序算法,无非就是把正确的元素放到正确的位置,计数排序就是计算相同key的元素各有多少个,然后根据出现的次数累加而获得最终的位置信息。但是计数排序有两个限制条件,那就是存在一个正整数K,使得数组里面的所有元素的key值都不大
2015-09-19 22:02:36
572
转载 【排序算法】总结
转载来自于:九大排序算法再总结排序的定义:输入:n个数:a1,a2,a3,...,an输出:n个数的排列:a1',a2',a3',...,an',使得a1'In-place sort(不占用额外内存或占用常数的内存):插入排序、选择排序、冒泡排序、堆排序、快速排序。Out-place sort:归并排序、计数排序、基数排序、桶排序。当需要对大量数据进行排
2015-09-19 15:50:46
467
原创 【排序算法】希尔排序
希尔排序--不需要大量的辅助空间,和归并排序一样容易实现。希尔排序是基于插入排序的一种算法, 在此算法基础之上增加了一个新的特性,提高了效率。 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 =1( … 一般的初次取序列
2015-09-19 09:56:12
723
原创 【排序算法】冒泡排序
冒泡排序算法的运作如下:(从后往前) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 冒泡排序--Java实现 /
2015-09-19 09:48:05
555
原创 【算法分析】寻找多数元素
解决问题:在一个整数序列A中,如果整数r在A中出现的次数大于序列A的一半,那么我们把这个r成为多数元素。如何更快的找出这个元素呢?
2015-09-08 15:13:17
4202
转载 【数据结构】图
转载来自:数据结构之图一、基本术语图:由有穷、非空点集和边集合组成,简写成G(V,E);Vertex:图中的顶点;无向图:图中每条边都没有方向;有向图:图中每条边都有方向;无向边:边是没有方向的,写为(a,b)有向边:边是有方向的,写为有向边也成为弧;开始顶点称为弧尾,结束顶点称
2015-09-04 15:43:54
568
原创 【排序算法】堆排序
package sort.algorithm.heap;public class Heap{ // 堆排序,它组合了归并排序的时间效率和快速排序的控件效率。和归并排序一样,堆排序 // 的最差情况运行时间为O(nlogn),和快速排序一样它不需要额外的数组 public static void heapsort(int[] data, int n) { int unsorte
2015-08-28 09:43:17
469
原创 【排序算法】快速排序
package sort.algorithm.quick;public class Quick{ // 快速排序的最坏情况运行时间是O(n^2),但快速排序的平均情况运行时间和最好情况运行时间都是O(nlogn) public static void quicksort(int[] data, int first, int n) { int pivotIndex; int n1
2015-08-28 09:41:39
373
原创 【排序算法】归并排序
package sort.algorithm.merg;public class Merg{ // 归并算法--划分解决排序 // 归并排序的最坏情况运行时间、平均情况运行时间以及最好情况运行时间都是O(nlogn) // 归并排序的最坏情况运行时间是O(nlogn),而快速排序的最坏情况运行时间是O(n^2).但是归并排序需要更多的存储空间,因为它 // 需要一个额外的数组 pu
2015-08-28 09:38:43
503
原创 【排序算法】插入排序
package sort.algorithm.insert;public class Insert{ // 处理的方法是:每次获得一个元素,构建另一个有序列表。使用一个数组就足够了, // 如果有十个位置,一个列表可以保存在数组的头部,而另一个列表可以保存在数组 // 的尾部。 // 插入排序的最坏情况是O(n^2) public static void insertSort(
2015-08-28 09:36:40
398
原创 【排序算法】选择排序
package sort.algorithm.select;public class Select{ // 选择排序的最差情况运行时间是O(n^2) public static void selectionSort(int[] data) { int length = data.length; int max; int temp; for (int i = 0;
2015-08-28 09:34:06
378
转载 N皇后 问题
本内容转载来自:点击打回溯法求解N皇后问题(Java实现回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并以此慢慢地扩大问题规模,迭代地逼近最终问题的解。这种迭代类似于穷举并且是试探性的,因为当目前的可能答案被测试出不可能可以获得最终解时,则撤销当前的这一步求解过程,回溯到上一步寻找其他求解路径。为了能够撤销当前的求
2015-07-11 11:16:09
380
原创 【数据结构】栈的链表实现
import java.util.EmptyStackException;public class LinkedStack implements Cloneable{ private Node top; public LinkedStack() { top = null; } public LinkedStack clone() { LinkedStack ans
2015-07-10 11:27:11
430
原创 【数据结构】栈的数组实现
import java.util.EmptyStackException;public class ArrayStack implements Cloneable{ private T[] data; private int manyItems; // 默认构造函数 public ArrayStack() { final int INITIAL_CAPACITY = 10;
2015-07-10 11:22:47
371
原创 【数据结构】复杂表达式的求值
一、表达式的三种表示法1. 中缀表示法 运算符放在两个运算对象中间,这是我们书写的时候最熟悉的一种形式,如:(2 + 3)* 72. 前缀表示法 前缀是附加在表达式前面的内容。又称为波兰前缀表示法,因为他是由波兰数学家Jan Lukasiewicz发明的。使用前缀表示法后,就完全不需要括号了。例如,表达式(2 + 3)* 7以波兰前缀表示法可以写成: *
2015-07-09 10:57:41
1690
转载 深入剖析Java中的装箱和拆箱
本内容转载自:深入剖析JAVA中的装箱和拆箱一.什么是装箱?什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:1
2015-07-08 14:56:58
609
原创 【数据结构】利用栈来求算术表达式的值
import java.util.Scanner;import java.util.Stack;import java.util.regex.Pattern;public class CalculateUtils{public static final Pattern UNSIGNED_DOUBLE = Pattern.compile("((\\d+\\.?\\d*
2015-07-03 17:10:05
934
转载 【数据结构】Java单链表的逆序
内容转载来自:单链表逆序 第二个题目是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明确说明,但是如果面试者使用了额外的节点存储空间做中转,会得到一个比较低的分数。如何在不使用额外存储节点的情况下使一个单链表的所有节点逆序?我们先用迭代循环的思想来分析这个问题,链表的初始状态如图(1)所示:
2015-07-02 11:48:03
4351
转载 深入JAVA核心 JAVA内存分配原理精讲
深入JAVA核心 JAVA内存分配原理精讲内容转载来自:深入JAVA核心 JAVA内存分配原理精讲内容概要: 栈、堆、常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同。本文将深入Java核心,详细讲解Java内存分配方面的知识。Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,
2015-07-01 11:56:11
517
原创 Java中的克隆clone以及对数组的复制
一、浅克隆和深克隆 1. 浅克隆(shadow clone) 只需要复制对象的字段值,对于8种基本类型,如int,long,float等,则复制值;对于复合数据类型仅复制该字段值,如数组则复制地址,对于对象变量则复制对象的reference。 2.深克隆(deep clone) 深克隆和浅克隆的区别在于复合数据类型的复制。若对象中的某个字段为复合类型,在克隆
2015-06-26 16:44:30
1094
原创 Eclipse安装windowbuilder插件,实现Java的可视化编程
一、利用Windowbuilder插件的好处 利用Windowbuilder插件,一个好处就是能够任意拖动控件,实现一个可视化的界面设计;第二个好处就是能够提高开发的效率,因为在你拖动控件后,代码会自动生成。对于初学者来说还是多去了解Swing的框架结构,自己多去敲写代码。二、windowbuilder插件windowbuilder可以在Eclipse的官网上面找到对应的链接
2015-06-04 22:01:59
1040
转载 JVM内存的设置
一、JVM内存的设置的原理默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。设置jvm内存的方法,对于单独的.class,可以用下面的方法对Test运行时的jvm内存进行设置。java -Xms64m -Xmx256m Test-Xms是设置内存初始化的大小-Xmx是设置最大能够使用内存的大小(最好
2015-04-08 10:43:45
550
原创 Java Swing 双缓冲技术解决图像闪烁问题
我们看电视时,看到的屏幕称为OSD层,也就是说,只有在OSD层上显示图像我们才能看到。现在,我需要创建一个虚拟的、看不见但是可以在上面画图(比如说画点、线)的OSD层,我称之为offscreen(后台缓冲区)。这个offscreen存在于内存中,我们在上面画图,这个offscreen上面的东西可以显示在OSD层上,需要一个创建这个offscreen的函数,返回这个offscr
2015-03-17 09:57:18
11577
DBCP资源池使用jar包
2015-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人