11 飞天御剑流

尚未进行身份认证

我要认证

....剑心,已不再是过去那个传奇中的杀人拔刀斋。手中的逆刃刀,也不再是一把剥夺敌人生存权利的武器,而是一把活人剑,能活人之剑........

等级
TA的排名 2w+

不定长字符串输入处理小技巧

     大家在编程的过程中,经常会遇到需要输入一个不定长字符串的情况。通常来说,解决这个问题可以有两种方法:        一是先分配一个固定长度的缓冲区,把输入的字符串先存储到这个缓冲区,然后再根据其长度动态分配内存。这个方法缺点是无论分配多大的缓冲区,都无法完全满足要求。太大浪费内存,太小会发生字符串截断。        二是逐个字符输入,然后通过realloc函数来实时改变缓冲区的

2009-11-26 08:31:00

如何高效产生m个n范围内的不重复随机数(m<=n)

    如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生。这是个很笨的方法,且比较次数呈线性增长,越往后次数越多。其实这些比较是多余的,完全可以不进行比较,只要反过来,按顺序产生这些数,但随机产生它们的位置。例如下面产生100个100以内不重复随机数的代码:int a[100];for(i=0; ifor(i=99; i>=

2009-11-26 08:27:00

五、实现

 #include "DynamicDLA.h"#ifndef __cplusplus#include #include #else#include #include namespace dynamic_dimensionality_length_array{#endifstruct arrayinfo{ str

2009-08-27 23:47:00

四、各函数功能介绍

    下面一组函数是DDLA的基本函数: void* new_a( size_t, size_t, ... );void* new0_a( size_t, size_t, ... );void* resize_a( void*, size_t, ... );size_t sizeof_a( void* );size_t dimen_a( void* );size_t*

2009-08-27 23:40:00

三、接口

     下面是ADT接口头文件DynamicDLA.h的内容,各函数的实现源码放在最后一部分。#define cplusplus控制在c还是c++中编译。在c++中使用时,各函数放在命名空间dynamic_dimensionality_length_array中,别名ddla。 #ifndef DYNAMICDLA_H#define DYNAMICDLA_H#ifndef

2009-08-27 23:32:00

二、功能简单演示

    以下代码为DDLA功能的简单演示,可将其后的接口头文件和实现源代码编译后运行。  #include #include "DynamicDLA.h"void func( int** );int main( void ){ int i, j, k; int **p1 = ( int** )new_a( sizeof( int ), 2, 7, 5 )

2009-08-27 23:19:00

一、维度及长度均可任意变形的动态数组概述

    近日,有同事需要设计一个可自由变形的多维数组,苦思数日,不得其解,求助于我。于是我帮他写了一个可自由改变维度及长度的数组ADT。后来想,网上应该也有人需要这种东西吧,何不放到博客上来,让有此需要的朋友也一同来参考参考。于是就将开始的3个函数扩展为20个函数。鉴于时间仓促,源码一定有很多不完善的地方,如果遇到哪些牛人有兴趣对其进行改进,更求之不得了。     我将此ADT称为Dyna

2009-08-27 23:03:00
勋章 我的勋章
    暂无奖章