啥都不说,先上代码

static void vector_array_test(void)
{VECTOR v;ARRAY a;int aa[5];int b = 0;VECTOR_INIT(v, int);VECTOR_RESIZE(v, 5, int);ARRAY_INIT(a, 5, int);#define OUT(x) printf("%d\n", x)
#define IN(x)  scanf("%d", &x)
#define FILL_INCREASE(x) x = ++b
#define FILL_DECREASE(x) x = --bFOR_EACH(VECTOR_BEGIN(v), VECTOR_END(v), VECTOR_ITERATOR, int, FILL_INCREASE);FOR_EACH(VECTOR_BEGIN(v), VECTOR_END(v), VECTOR_ITERATOR, int, OUT);FOR_EACH(ARRAY_BEGIN(a), ARRAY_END(a), ARRAY_ITERATOR, int, FILL_DECREASE);FOR_EACH(ARRAY_BEGIN(a), ARRAY_END(a), ARRAY_ITERATOR, int, OUT);FOR_EACH(aa, aa + 5, ARRAY_ITERATOR, int, IN);FOR_EACH(aa, aa + 5, ARRAY_ITERATOR, int, OUT);COPY(aa, aa + 5, ARRAY_ITERATOR, int, VECTOR_BEGIN(v), VECTOR_ITERATOR, int);FOR_EACH(VECTOR_BEGIN(v), VECTOR_END(v), VECTOR_ITERATOR, int, OUT);VECTOR_DESTROY(v);ARRAY_DESTROY(a);
}

是不是感觉有点熟悉啊,呵呵,这就是C语言版STL,容器,迭代器,算法,函数对象,一个都不少。注意算法FOR_EACH支持函数,宏,用C++编译器也支持c++函数对象。而且宏FILL可以访问up_value,也就是代码中的局部变量b!这一点彻底超越了c++的stl哟,喜欢函数编程的朋友也许会开心一阵子咯。

不过,这毕竟是C语言,我们不得不在算法中直接写下iterator_trait类型,还要把元素类型给写出来,还请多多包涵,嘿嘿。

当然,那些罗哩罗嗦的流迭代器啊,从此和他们说拜拜吧,鄙人也不想费力不讨好的去模拟那些屠龙术了。

鄙人已经完成了容器中的数组,矢量,双向链表,算法挑了几个有代表性的来实现,用于测试容器迭代器迭代性能和各种类型迭代器的适配。完成度少说也有60%左右了吧,先想拿出部分来给大家瞧瞧,看看有啥问题没。

C 语言版stl: CSTL相关推荐

  1. 数据结构(C语言版) 第 八 章 排序 知识梳理 + 习题详解

    目录 一.归并排序 二.交换排序 1.快速排序 2.冒泡排序 三.插入排序 1.直接插入排序(基于顺序查找) 2.折半插入排序(基于折半查找) 3.希尔排序(基于逐趟缩小增量) 四.选择排序 0.直接 ...

  2. 数据结构(C语言版) 第 三 章 栈与队列 知识梳理 + 作业习题详解

    目录 一.栈 0.栈的基本概念 1.栈的实现 2.栈与递归 3.Hanoi塔问题 二.队列 0.队列的基本概念 1.队列的实现 2.循环队列 2.1循环队列的相关条件和公式: 3.链队列 4.链队列完 ...

  3. 数据结构(C语言版) 第二章 线性表 知识梳理+作业习题详解

    目录 一.线性表顺序存储结构(顺序表) 0.线性表的基本概念 1.样例引入:多项式相加 二.线性表链式存储结构(链表) 0.链表的基本概念 1.前插法代码实例 2.链表尾插法完整代码附带各种操作 三. ...

  4. c语言手册 html,C语言版完全指引手册beta版——初到者必读 — 编程爱好者社区...

    主题:C语言版完全指引手册beta版--初到者必读 雨中飞燕 [专家分:18980] 发布于 2007-07-29 11:51:00 关于许多朋友提出的本版置顶帖过多且技术含量不高,版面帮助信息基本没 ...

  5. 用c语言编写一个1V1聊天程序,socket多人聊天程序C语言版(二)

    1V1实现了,1V多也就容易了.不过相对于1V1的程序,我经过大改,采用链表来动态管理.这样效率真的提升不少,至少CPU使用率稳稳的在20以下,不会飙到100了.用C语言写这个还是挺费时间的,因为什么 ...

  6. c语言 静态链表插入排序,数据结构C语言版 表插入排序

    西门豹治邺奇计 数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P2 ...

  7. 资料分享:送你一本《数据结构(C语言版)》电子书!

    要想写出可复用.可扩展.易维护.灵活性好的代码,「数据结构」这一关必须要过啊! 在数据结构与算法的众多教材中,奉为经典的当属清华大学严蔚敏老师的著作.很多学校也选择这本书作为考研指定教材. 正在学习数 ...

  8. 资料分享:送你一本《数据结构(C#语言版)》电子书!

    对于信息类专业的学生而言,数据结构与算法是一门必修的课程.只有学好这门课程,熟练掌握线性表.栈.队列.树.图等基本结构,以及在这些结构上的各种算法,才能利用计算机去解决实际问题. 如何学好这门课程呢, ...

  9. 数据结构(C语言版) 第 六 章 图 知识梳理 + 习题详解

    目录 一. 图的基本定义和术语 一.图的基本概念 1.度 2.连通 (1)连通图 (2)强连通/强连通图 3.回路 4.完全图 二.图的三种存储结构 1.邻接矩阵表示法 2.邻接表(链式)表示法 3. ...

最新文章

  1. c#打开数据库连接池的工作机制_数据库连接池-tomcat-jdbc使用笔记
  2. Facebook的实时Hadoop系统
  3. 科大讯飞软件研发面试
  4. JVM的架构和执行过程
  5. [创业基础笔记] 第1讲-认识创业与创业者
  6. WPF对决Silverlight:为项目选择最佳技术
  7. long类型怎么转换成string_Python知识点-Python变量类型有哪些?
  8. python 在window 系统 连接并操作远程 oracle 数据库
  9. vscode主题_VScode霓虹发光主题SynthWave 84|透明主题
  10. otf字体转ttf字体
  11. 浏览器Cookie策略
  12. Android 自定义和可下载字体
  13. page cache和buffer cache之间的关系以及验证
  14. python爬取阿里云漏洞库完整版
  15. tomcat示例文件漏洞解决方案
  16. 如何软著办理,软著申请步骤,软著办理流程
  17. Contelec KL750-5K0/M-SE醉后不知天在水
  18. Qt+FFmpeg录屏
  19. linux显示mem进行排序,linux下top命令显示详解
  20. lo linux 环回端口,本地环回接口lo The Loopback Network Interface lo--用Enki学Linux系列(2)...

热门文章

  1. c语言程序设计学了什么知识,初学C语言编程基础知识
  2. mysql update sex m_mysql(四)-增删改查
  3. JAVA程序设计:找出最长的超赞子字符串(LeetCode:5485)
  4. html超出父元素,【Web前端问题】HTML CSS:子元素什么时候可以超出父元素限制的范围?...
  5. CPU版本的Tensorflow安装
  6. PAA-CBP聚丙烯酸修饰卡铂/PLL-CBP聚赖氨酸修饰卡铂/PLA-CBP聚乳酸修饰卡铂
  7. 如何实现页面在线咨询框架
  8. SSM 高校学生班费管理系统
  9. 进程是否采用3d指令的判断
  10. 计算机基础创新教学,创新理念计算机基础教育教学