- 博客(48)
- 资源 (5)
- 收藏
- 关注
原创 AP聚类算法
最近在学习AP聚类算法,网上找了好多资料(http://blog.csdn.net/dreamd1987/article/details/8923035, http://www.doc88.com/p-239796915955.html, http://www.doc88.com/p-886680412462.html),对于AP的迭代公式都不太相同,后经过验证找到了正确的迭代公式,总结一下,以后
2014-01-25 23:33:22 15930 1
原创 两个指针相减的结果
例子:inta[3] ={1,2,3}; int* p; int* q; p= a; cout"p的地址:" cout"p指向的内容:" q= &a[2]; cout"q的地址:" cout"q指向的内容:" cout"两个指针的减法:" cout"两个指针减法的结果作为数组下
2013-10-06 21:58:54 5382 1
原创 只遍历一次单链表,确定单链表中间节点的位置
问题:给定一个单链表,不知道节点N的值,怎样只变量一次就知道中间节点? #include "stdafx.h"#include using namespace std; structTNode{ int nValue; TNode*pNext; TNode() { nValue= 0; pN
2013-09-30 14:15:06 2502
原创 面试题:编写一个将十进制数转换为任意进制的算法或函数
题目:设计一个函数,输入参数1是一个十进制整数,参数2是要待转换的进制,用m表示,如m=8,代表将参数1转换为8进制。并给出输出。 思路:除积取余,倒排余数。代码:#include "stdafx.h"#include #include using namespace std; dequeint>Hexadecimal_Conversion(int
2013-09-25 23:08:28 13789
原创 如何保证list容器中任意连续对象元素都不相同:unique()
成员函数unique()可以保证链表容器中连续两个对象具有唯一性,即要求链表容器中的任意连续对象元素值是不同的,但不能保证链表容器中所有对象的唯一性。例子:#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[])
2013-09-24 22:04:52 2055
原创 链表list容器中通过splice合并链表与merge的不同,及需要注意的问题
#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[]){ listint> c1,c2,c3,c4; c1.push_back(3); c1.push_back(6); c
2013-09-24 21:01:37 3542
原创 将两个list链表通过merge合并时注意的三个问题
注意:1)merge()是将两个有序的链表合并成另一个有序的链表,如果有一个链表不是有序的那么在执行代码时会报错:说链表不是有序的。2)还有,两个链表中的内容排序顺序与合并时采用的排序顺序必须一致,如果不一致,也会报错,说链表不是有序的。如想要降序合并两个链表,那么合并前的两个链表也必须是按降序排列的。3)另外,当执行完merge()后,右边的链表将变为空。 例子:list v
2013-09-24 10:53:33 8746 5
原创 替换deque中的内容:assign()成员函数
通过迭代器可以修改deque中的内容,但是一次只能替换一个对象;利用assign()函数可以实现一次替换多个元素的目的。例子:#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[]){ dequein
2013-09-23 10:49:23 1618
原创 查找第一次出现/不出现指定对象的位置:lower_bound()与upper_bound()
可以利用lower_bound()成员函数查找向量容器中第一次出现某个对象的位置;upper_bound()成员函数查找向量容器中第一次不出现某个对象的位置。#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[])
2013-09-21 21:29:55 1754
原创 如何快速交换两个向量容器中的内容
#include "stdafx.h"#include #include #include using namespace std; voidPrintInt(constint&nData){ cout}int_tmain(int argc, _TCHAR* argv[]){ vectorint> vecInt1,ve
2013-09-21 21:13:04 6377
原创 删除vector容器中的对象元素的三种方法:pop_back, erase与remove算法
向量容器的成员函数pop_back()可以删除最后一个元素,而函数erase()可以删除由一个iterator指出的元素,也可以删除一个指定范围的元素。 还可以采用通用算法remove()来删除vector容器中的元素,不同的是,采用remove一般情况下不会改变容器的大小,而pop_back()与erase()等成员函数会改变容器的大小。#include "stdafx.h"
2013-09-21 21:04:32 80905 4
原创 关于二叉搜索树及三种树遍历的特点
二叉搜索树:或者是一棵空树,或者具有如下性质:对树中任一节点X,它的左子树中的所有关键字节点的值都不大于(小于或等于)X的关键字值,而它的右子树中的所有关键字节点的值都大于X的关键字值。中序遍历二叉搜索树可得到一个关键字的有序序列,由小到大排序。在二叉搜索树中的插入、删除、搜索的复杂度等于树高,即(log(n))。在二叉搜索树中找最小节点和最大节点也很方面,如要找最小节点,只需从根节点
2013-09-21 10:03:08 5443
原创 向vector容器中插入对象:insert()成员函数
vector容器的成员函数insert()把一个或多个对象插入到iterator指示的位置。所查找的元素将出现在iterator指出的位置之前。#include "stdafx.h"#include #include #include #include #include using namespace std; voidPrintInt(
2013-09-20 23:16:57 4700
原创 list排序成员函数对string对象与char*对象排序的差别
对list容器中的对象排序,不能使用sort()算法,只能采用其自身的排序函数sort()。因为,算法sort()只支持随机存取的容器的排序,如vector等。对基本数据对象list排序:成员函数sort()情况1:对string排序#include "stdafx.h"#include #include #include using namespa
2013-09-20 23:02:24 1643
原创 从vector容器中查找一个子串:search()算法
如果要从vector容器中查找是否存在一个子串序列,就像从一个字符串中查找子串那样,次数find()与find_if()算法就不起作用了,需要采用search()算法:例子:#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR*
2013-09-20 22:03:17 6813
原创 STL 查找vector容器中的指定对象:find()与find_if()算法
1 从vector容器中查找指定对象:find()算法 STL的通用算法find()和find_if()可以查找指定对象,参数1,即首iterator指着开始的位置,参数2,即次iterator指着停止处理的地方。注意:包含开始和结束的位置的元素。例子:#include "stdafx.h"#include #include #include using
2013-09-20 21:48:21 26742
原创 STL 统计vector容器中指定对象元素出现的次数:count()与count_if()算法
1 统计vector向量中指定元素出现的次数:count()算法 利用STL通用算法统计vector向量中某个元素出现的次数:count()算法统计等于某个值的对象的个数。#include "stdafx.h"#include #include #include //包含通用算法using namespace std;int_tmain(int a
2013-09-20 20:54:48 34657
原创 vector容器成员函数resize与reserve的区别
resize是设置向量的大小:即向量的大小与容量相同。而reserve是设置向量的容量,并不改变向量的大小。另外:向量的最大大小是固定住,不可改变。例子:#include "stdafx.h"#include #include using namespace std; typedefvectorint> VEC_INT;int_tmain(int ar
2013-09-20 15:35:25 1960
原创 STL集合容器set按照由小到大或者由大到小的顺序存放元素
(1)由小到大setint,lessint>> M; M.insert(1960); M.insert(1952); M.insert(1771); M.insert(1812); M.insert(1960); M.insert(2000); setint,lessint>>::iterator N= M.beg
2013-09-19 23:20:43 12460 1
原创 multiset集合容器的集合运算:并、交、差
set和multiset的内部通常是采用平衡二叉树来实现。当放入元素时,会按照一定的排序方法自动排序,默认是按照less不可以直接修改set或multiset容器中的元素值,因为这样就违反了元素自动排序的规则。如果想修改一个元素的值,则必须先删除原有的元素,再插入新的元素。multiset容器的集合并、交、差运算(注意:并集运算的结果)#include "stdafx.h"#inc
2013-09-19 23:03:47 2253
原创 STL中的set集合容器进行集合运算:并、交、差实例
集合容器的集合运算:并、交、差:#include "stdafx.h"#include #include #include //集合运算:并、交、差需要包含该头文件using namespace std;structltstr{ bool operator()(const char* s1,const char* s2)const
2013-09-19 22:22:52 5095
原创 C++面向对象程序设计中如何判断一个对象的类类型
在C++面向对象程序设计中,有时候需要判断某个对象的类类型,那么可以有下列两种方法:方法1: 采用 typeid()函数进行判断:(缺点:当存在继承,并且子类指针赋值给父类指针时,此时判断的对象类型为父类型,而不是子类类型)对于一个父类CFather,其有两个子类CChildOne,CChildTwo。那么如何判断一个对象的类类型。如:CChildOne objChildOne;
2013-09-19 18:42:10 15445
原创 如何快速方便的输出向量vector容器中不重复的内容
在vector容器中,存入的内容难免会出现重复,那么如何快速输出或提前非重复的那些数据呢,即重复的数据只输出一次,直观的方法是每次输出都要通过循环比较是否已经输出过,这种方法还是比较费时的,可以利用unique函数简化代码,例子:#include "stdafx.h"#include #include #include #include using na
2013-09-15 23:33:57 2905 3
原创 利用copy函数简单快速输出/保存vector向量容器中的数据
如果要输出vector中的数据我们可以通过循环语句输出,更加简便的方法是利用copy函数直接输出,例子:#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[]){ //利用copy函数快速输出向量容器
2013-09-15 23:00:06 3916
原创 关于利用STL中的sort算法对向量等容器进行排序的问题
使用该算法需要包含头文件#include ; 并且声明命名空间usingnamespace std;.该算法默认是按照由小到大排序的,如果需要由大到小排序,那么有两种办法:(1)假设有向量vector v;可以先使用sort排序,即sort(v.begin(), v.end());然后再逆序即可,即reverse(v.begin(),v.end());这个方法会耗时更多,因为多了一次逆序的操作
2013-09-13 23:10:11 1991
原创 利用C++标准库函数对数组进行排序
对数组进行排序,我们可以自己写排序函数,然而C++标准库中有现成的函数对数组进行排序:例子:#include "stdafx.h"#include #include //如果是C语言的话改为#include using namespace std; intcmpTest(constvoid*pFirst,constvoid*pSecond){
2013-09-13 20:41:52 3107
原创 C++内联函数
由于函数调用会存在一定的时间和空间开销,影响执行效率。内联函数在程序编译时,编译器将程序中的内联函数的调用表达式用内联函数的函数体来进行替换,以目标代码的增加来换取时间的节省。定义格式:inline 返回值类型 函数名(类型1 参数1,类型2,参数2…){}内联函数与一般成员函数的区别就是对函数调用的处理。使用内联函数注意:1. 在内联函数内部不允许使用循环语句和开关语句。
2013-09-06 10:56:57 815
原创 关于C++中的拷贝构造函数和赋值函数
如果类定义的数据成员中存在指针或引用,那么最好重载这两个函数。1. 定义拷贝构造函数的定义格式:构造函数名(const 源类名& 引用对象形参名){} 赋值函数定义格式:源类名 & operate=(const 源类名& 引用对象形参名)。(注:声明为const类型是为了避免对源对象的误操作)。拷贝构造函数与赋值函数体的内容差不多:如class Demo{
2013-09-06 10:35:03 1026
原创 C++中的初始化列表中可以对那些变量或对象进行初始化
构造函数与其函数体之间可以添加初始化列表,能对某些对象进行初始化。格式为类名() : 变量1(参数1),变量2(参数2){}1. 父类的对象的构造必须在初始化列表中,如:子类名(): 父类名(对象参数){}2. 类中声明为const的成员的初始化必须在初始化列表中,如:class A{ private: const int a; co
2013-09-06 09:55:45 1426
原创 C++中指针与引用的区别
相同点:1. 指针与引用都是地址的概念。指针指向一块内存,指针的内容是所指向内存的地址;而引用则是某块内存的别名。2. 引用在语言内部用指针实现。3. 一般把引用理解为指针,不会犯严重语义错误。引用操作可以看做是受限的指针(仅允许取内容操作)。不同点:1. 指针逻辑上是独立的,可以改变指针的内容,也可以改变指针指向的内存中的内容;而引用只是一个别
2013-09-05 20:32:20 1362
原创 删除list或vector中的自定义结构体对象
vector删除结构体元素需要采用remove_if()函数:#include "stdafx.h"#include #include #include //不要忘记这个头文件using namespace std;//定义结构体typedef struct T_Node{ int nID; double dValue;
2013-07-25 22:14:50 3063
原创 C++浮点数转换为字符串时如何避免自动转换为科学计数法
函数_gcvt和_gcvt_s可以将浮点数转换为字符串,我在 http://blog.csdn.net/master_feng2009/article/details/9446355中有描述。但是当浮点数为无限小数时转换为字符串可能会自动变为科学计数法,而有些情况下不应该转换为科学技术法,如执行SQL语句时,当插入浮点数据时,如果为科学计数法则会出错。那么如何避免自动转换为科学计数法呢,下
2013-07-24 22:29:43 6787
原创 STL利用输入迭代器读入文本文件中的数据
传统的C++读入文本文件的数据方式大概是:ifstream dataFile;dataFile.open(“inits.txt”);double dArray[10]; //或者根据文本文件中的数据数目动态申请for(int i=0; i{ cout>>dArray[i];}dataFile.close(); 可以采用输入迭代器读入文本文件中的数据
2013-07-24 16:54:30 1081
原创 MySQL实现文本文件导入数据库以及将表格导出到文本文件
1. 将表格导出到文本文件命令:SELECT * FROM tableName into outfile ‘a.txt’ //注:a.txt可以替换为自己的路径,如d:/mydatabase/a.txt,若不加路径,则默认保存到数据库表格所在的目录下 2. 将文本文件中的数据导入到数据库表格中命令:load data local infile ‘d:/test.txt’into t
2013-07-24 11:08:02 1990
原创 如何手动启动MySQL服务器
我在Windows上安装完MySQL后,没有设置开机自动启动MySQL服务,在我重新启动电脑后,发现无法连接数据库。其原因就是没有启动MySQL服务,那么启动MySQL服务的方法为:开始——>运行(即命令行中)输入services.msc,会打开下面的窗口, 找到MySQL,点击旁边的启动,或者双击会出现下面的窗口,点击开启就启动MySQL服务了,也可以选择启动类型为自动,这样
2013-07-24 11:03:33 4627
原创 在list中查找find
如果list存储的是能够比较大小的数值型数据,如int,double等,可以直接采用find进行查找,例子:#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[]){ listint> listTemp; listint>::ite
2013-07-24 10:56:29 1400
原创 如何在list中查找
如果list存储的是能够比较大小的数值型数据,如int,double等,可以直接采用find进行查找,例子:#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[]){ listint> listTemp; listint>::ite
2013-07-24 10:50:27 2165
原创 STL的list容器如何对结构体进行排序
链表list有自定义的sort排序函数,默认由大到小排序,但是只有能够比较大小的数值类型的内容才可以,如int,float,double等,对于结构体需要自己定义排序函数。例如:定义结构体:typedef struct NewTreeElem{ long nNodeId; //节点id int nLevel; //层次 double dSo
2013-07-24 10:04:22 4066
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人