- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 不定长字符串输入处理小技巧
大家在编程的过程中,经常会遇到需要输入一个不定长字符串的情况。通常来说,解决这个问题可以有两种方法: 一是先分配一个固定长度的缓冲区,把输入的字符串先存储到这个缓冲区,然后再根据其长度动态分配内存。这个方法缺点是无论分配多大的缓冲区,都无法完全满足要求。太大浪费内存,太小会发生字符串截断。 二是逐个字符输入,然后通过realloc函数来实时改变缓冲区的
2009-11-26 08:31:00
7830
1
原创 如何高效产生m个n范围内的不重复随机数(m<=n)
如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生。这是个很笨的方法,且比较次数呈线性增长,越往后次数越多。其实这些比较是多余的,完全可以不进行比较,只要反过来,按顺序产生这些数,但随机产生它们的位置。例如下面产生100个100以内不重复随机数的代码:int a[100];for(i=0; ifor(i=99; i>=
2009-11-26 08:27:00
6888
8
原创 五、实现
#include "DynamicDLA.h"#ifndef __cplusplus#include #include #else#include #include namespace dynamic_dimensionality_length_array{#endifstruct arrayinfo{ str
2009-08-27 23:47:00
2992
原创 四、各函数功能介绍
下面一组函数是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
3149
原创 三、接口
下面是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
2543
原创 二、功能简单演示
以下代码为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
2755
2
原创 一、维度及长度均可任意变形的动态数组概述
近日,有同事需要设计一个可自由变形的多维数组,苦思数日,不得其解,求助于我。于是我帮他写了一个可自由改变维度及长度的数组ADT。后来想,网上应该也有人需要这种东西吧,何不放到博客上来,让有此需要的朋友也一同来参考参考。于是就将开始的3个函数扩展为20个函数。鉴于时间仓促,源码一定有很多不完善的地方,如果遇到哪些牛人有兴趣对其进行改进,更求之不得了。 我将此ADT称为Dyna
2009-08-27 23:03:00
4093
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人