C/C++
Baocai3000
技术源于需求又高于需求
展开
-
内存访问越界
内存越界转载 2010-07-07 21:01:00 · 1631 阅读 · 0 评论 -
MSRA(1):const成员函数,malloc
MSRA(1):const成员函数,malloc原创 2010-07-08 01:21:00 · 837 阅读 · 2 评论 -
LinuxC:sizeof,strlen
linuxC:sizeof,strlen原创 2010-07-08 03:25:00 · 1029 阅读 · 0 评论 -
我的C算法库【1】
我的C算法库【1】原创 2010-07-10 02:26:00 · 872 阅读 · 0 评论 -
String的实现1
String的实现1原创 2010-07-17 22:57:00 · 611 阅读 · 0 评论 -
动态联编
动态联编原创 2010-07-20 16:04:00 · 569 阅读 · 0 评论 -
对象复制
对象复制原创 2010-07-17 16:01:00 · 705 阅读 · 0 评论 -
笔试题
1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,112.某32位系统下, C++程序,请计算sizeof 的值(5分).char str[] = “http://www.ibegroup.原创 2010-07-23 10:07:00 · 606 阅读 · 0 评论 -
模板特化
模板特化原创 2010-07-22 11:22:00 · 620 阅读 · 0 评论 -
《林锐:高质量C/C++编程指南》指针注意的地方
《林锐:高质量C/C++编程指南》指针注意的地方原创 2010-07-29 20:59:00 · 841 阅读 · 0 评论 -
《林锐:高质量C/C++编程指南》笔记【3】
<br />1.inline 是一种“用于实现的关键字”,而不是一种“用于声明的关键字”。<br />2.定义在类声明之中的成员函数将自动地成为内联函数,例如<br />class A<br />{<br />public:<br /> void Foo(int x, int y) { ... } // 自动地成为内联函数<br />}3.如果使用“缺省的无参数构造函数”和“缺省的析构函数” ,等于放弃了自主“初始化”和“清除”的机会,C++发明人 Stroustrup 的好心好意白费了。 “原创 2010-07-30 15:38:00 · 870 阅读 · 0 评论 -
《林锐:高质量C/C++编程指南》笔记【4】
<br />1.如果类之间存在继承关系,在编写上述基本函数时应注意以下事项:<br />1.1派生类的构造函数应在其初始化表里调用基类的构造函数。<br />1.2基类与派生类的析构函数应该为虚(即加 virtual 关键字)<br />1.3在编写派生类的赋值函数时,注意不要忘记对基类的数据成员重新赋值。<br />2. 严格的继承规则应当是:若在逻辑上 B 是 A 的“一种”,并且 A 的所有功能和属性对 B 而言都有意义,则允许 B 继承 A 的功能和属性。3. 若在逻辑上 A 是 B 的“一部原创 2010-07-30 15:56:00 · 966 阅读 · 0 评论 -
《编程之美3.1:字符串移位包含问题》
<br />给定两个字符串s1和s2,要求判定s2是否能够通过s1循环移位得到的字符串包含。例如,给定s1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。<br />/* ============================================================================ Name : Strstr.c Author : QiBaoyuan Version :原创 2010-08-13 15:00:00 · 662 阅读 · 0 评论 -
求一个数组的子数组的最大的和
求一个数组的子数组的最大的和假设已经知道(A[1],A[2]...A[n-1])中和最大的一段之和为All[1],且知道(A[1],A[2]...A[n-1]) * 包含A[1]的和最大的一段和为Start[1],那么ALL[0]=max(A[0],A[0]+Start[1],All[1]);符合动态规划的 * 无后效性,可以使用动态规划原创 2010-08-14 19:28:00 · 1033 阅读 · 0 评论 -
找出一堆树中最小的k个数
找出一堆树中最小的k个数,使用multiset来组成一个大顶堆。原创 2010-08-14 13:06:00 · 667 阅读 · 0 评论 -
大整数加法
大整数加法原创 2010-08-13 15:56:00 · 667 阅读 · 0 评论 -
带min函数的栈
带min函数的栈,采用两个deque模仿stack,一个存放所有的压栈值,另一个存放最小的index.由于需要用到随机访问,因此,用双端队列来作为基础容器,为每个新元素配备一个最小元素索引,出栈对应着最小元素索引出栈,入栈时先比较一下,在入队列,设置最小索引队列。原创 2010-08-14 17:21:00 · 735 阅读 · 0 评论 -
double与string的相互转化(C++)
double与string的相互转化(C++)原创 2010-08-14 21:58:00 · 15807 阅读 · 1 评论 -
STL中set、map的比较函数
STL中set、map的比较函数原创 2010-08-14 22:52:00 · 2374 阅读 · 1 评论 -
STL中的容器、迭代器与算法
//============================================================================// Name : STL_1.cpp// Author : 齐保元// Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//=============================原创 2010-08-14 23:34:00 · 1015 阅读 · 0 评论 -
要寻找一个单链表的中间节点
要寻找一个单链表的中间节点(1) 使用两个指针进行遍历,快指针每次步进2,慢指针每次步进1;(2) 当快指针到达链表尾部的时候,慢指针指向的就是链表的中点。原创 2010-08-19 11:16:00 · 1375 阅读 · 1 评论 -
左旋转n位字符串
左旋转n位字符串原创 2010-08-17 22:35:00 · 694 阅读 · 0 评论 -
和为n的连续正整数序列
small=1,big=2;若之和大于sum,则去掉小的small;若小于sum,则去掉big的值。原创 2010-08-17 23:45:00 · 915 阅读 · 0 评论 -
排列数组使得偶数在奇数的前面
排列数组使得偶数在奇数的前面。两个指首位针,前进与后退。原创 2010-08-18 00:08:00 · 775 阅读 · 0 评论 -
测试单链表是否有环,并找到入口
测试单链表是否有环,并找到入口:快慢指针,当两个指针相遇时存在环,并将快指针移动到头部单步移动,球最后的相遇点即可。原创 2010-08-19 11:18:00 · 682 阅读 · 0 评论 -
[算法库]MyStack
/* * myStack.cpp * * Created on: 2010-8-21 * Author: qibaoyuan */#include using namespace std;templateclass MyStack {public: MyStack() { } virtual ~MyStack() { } void push(_Tp const&);//压栈 void pop();//弹出 _Tp& top();//得到栈顶 bool empty() const {//是否为空原创 2010-08-21 13:35:00 · 834 阅读 · 0 评论 -
【百度面试题】循环有序数组的查找问题
问题:有一个循环有序数组A,如{7,8,9,0,1,2,3,4,5,6},不知道其最小值的位置。那么如何从这样的数组中寻找一个特定的元素呢?解决:当然,遍历总是一个办法。当然面试的时候回答遍历估计就直接杯具了。我的想法是将原数组分段,用首元素s,中间元素m和尾元素e,可以将数组分为两个子数组s1,s2,那么,必然有至少一个子数组是有序的。那么如何确定那一段是有序的呢?通过分析可以看到只有3种情况:●当s就是A中最小的元素时,以下不等式成立: s ●当最小值位于(s, m]时,则有: m ●当最小值出现在转载 2010-08-23 15:28:00 · 638 阅读 · 0 评论 -
memmove
// MemMove.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #include void* memmove1(void* dest,void *src,size_t count){ assert(dest!=NULL && src!=NULL); void *ret=dest; if (原创 2010-08-23 21:08:00 · 630 阅读 · 0 评论 -
[算法库]MyDeque
/* * myDeque.cpp * * Created on: 2010-8-21 * Author: qibaoyuan */#include #include "myStack.h"templateclass MyDeque {public: MyDeque() { } virtual ~MyDeque() { } void push_back(const _Tp& value); const _Tp pop();private: MyStack stackPush; MyStack st原创 2010-08-21 13:36:00 · 1098 阅读 · 0 评论 -
calloc与malloc的区别
1.函数名: calloc 功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。 用 法: void *calloc(unsigned n,unsigned size); 头文件:stdlib.h或malloc.h 2.函数名:malloc原型:extern void *malloc(unsigned int num_bytes); 头文件:在TC2.0中可以用malloc.h或 alloc.h (注意:alloc.h 与 mal原创 2010-08-21 22:19:00 · 1179 阅读 · 0 评论 -
[编程之美]寻找发贴水王Tango
<br />//============================================================================// Name : Tango.cpp// Author : qibaoyuan// Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//=====原创 2010-08-23 10:13:00 · 1087 阅读 · 0 评论 -
12个高矮不同的人,排成两排
作者:baihacker 来源:http://hi.baidu.com/feixue http://hi.csdn.net/baihacker 问题描述: 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 这个笔试题,很YD,因为把某个递归关系隐藏得很深. 问题分析: 我们先把这12个人从低到高排列,然后,选择6个人排在第一排,那么剩下的6个肯定是在第二排. 用0表示对应的人在第一排,用1表示对应的人在第二排,那么含有6个0,6个1的序列,就对应一种转载 2010-08-23 10:25:00 · 1021 阅读 · 0 评论 -
关于static
<br />问:static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?<br /> 答:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在原创 2010-08-21 09:54:00 · 559 阅读 · 0 评论 -
添加节点到单链表某个节点的前面
<br />基本思路:交换欲插入节点的值和该节点的值,然后按照正常的节点插入即可。<br /> //添加新节点到mid的前面 Node *node=(Node*)malloc(sizeof(Node)); node->value=90; //保存插入节点的值 int value=node->value; node->value=mid->value; mid->value=value; //穿起来 Node* next=mid->next; mid->n原创 2010-08-25 19:32:00 · 937 阅读 · 0 评论 -
求N的N次方的最高位
http://www.cnblogs.com/dmesg/archive/2009/08/02/1536997.html我想知道怎么求N的N次方,这个数据是很大的,但是我要的是这个数据的最高位的数,应该有什么好的方法吧! 请大侠们帮帮忙吧!!(N 这个问题提出后,fallening同学便很快的在五分钟内作出了解答log_10(N^N)=N*log_10(N) 因此,log_10(N)的第一位就是你要求的:)我在三楼看的很疑惑,于是向同学提出问题,一天之后他给出解答N^N=10^(Nlog(N))=10^(l转载 2010-08-24 19:51:00 · 2903 阅读 · 1 评论 -
可重入性和线程安全
<br /><br /><br /> <br />这个话题被大家说了很多遍,网上也有很多网友的blog可以参考,我发现了一个很直观的讲解,特转载过来(作者dog250),供大家分享。<br /><br />可重入性就是线程安全吗?很多人包括我自己起初都不过分区分它们,实际上也没有过分它们的必要,程序员是干活的,就像民工只要浇铸混凝土就可以了,然而如果程序员对一些平常的操作知其所以然后,就可能成为策划者。<br /> 首先这两者都是和共享变量,全局变量,静态变量相关的,因为传统的c语言都是串行过程化转载 2010-08-24 19:39:00 · 541 阅读 · 0 评论 -
[腾讯面试]有1到10w这10w个数,去除2个并打乱次序,如何找出那两个数
<br />描述:有1到10w这10w个数,去除2个并打乱次序,如何找出那两个数。(不准用位图!!)<br />位图解决:<br />位图的方法如下<br />假设待处理数组为A[10w-2] <br />定义一个数组B[10w],这里假设B中每个元素占用1比特,并初始化为全0 <br />for(i=0;i <10w-2;i++) <br />{ <br /> B[ A[i] ]=1 <br />} <br />那么B中为零的元素即为缺少的数据<br />这种方法的效率非常高,是计算机中最常用的算法之一<原创 2010-08-28 19:45:00 · 3372 阅读 · 2 评论 -
栈的分布
<br /> int i; int a[16]; int k=0; for(i=0;i<=16;i++){ a[i]=0; printf("%d,",i); }<br />对于上面的代码,其中变量的说明中,栈的分布:<br />|__i______|<br />|_a[15]___|<br />|__a[14]__|<br />.....<br />|___a[0]__|<br />|___k____原创 2010-08-29 17:54:00 · 682 阅读 · 0 评论 -
m表示为一些不超过n的自然数之和
<br />/*设m,n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。例:f(5,3)=5,有五种表示方式:3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1*/int f(m,n) int m,n;{ if(m==1)return 1; if(n==1)return 1; if(m<n) return f(m,m); if(m==n)return 1+f(m,n-1); return f(m,n-1)+f(原创 2010-08-30 00:15:00 · 2693 阅读 · 1 评论 -
[算法之美:3.2]电话号码对应的英语单词
<br />依次输出电话号码对应的所有字母组合。<br />/* ============================================================================ Name : telephoneNum.c Author : qibaoyuan Version : Copyright : Your copyright notice Description : Hello World in C,原创 2010-09-09 20:42:00 · 1202 阅读 · 0 评论