免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: tm_wb
打印 上一主题 下一主题

[C] cstl -- c语言编写通用数据结构和常用算法库(模仿SGI STL) [复制链接]

论坛徽章:
0
71 [报告]
发表于 2011-01-24 14:13 |只看该作者
不造一下轮子,如何知道轮子为什么应该做成圆的,如何做成圆的?

论坛徽章:
0
72 [报告]
发表于 2011-06-23 12:12 |只看该作者
支持lz继续开源,继续更新

论坛徽章:
0
73 [报告]
发表于 2012-03-23 08:27 |只看该作者
error:

  1. In file included from src/cstl_stack.c:22:
  2. include/cstl_stack_private.h:44: error: conflicting types for ‘stack_t’
  3. /usr/include/sys/_structs.h:218: error: previous declaration of ‘stack_t’ was here
复制代码
gcc info:

  1. Using built-in specs.
  2. Target: i686-apple-darwin11
  3. Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/src/configure --disable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
  4. Thread model: posix
  5. gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
复制代码

论坛徽章:
0
74 [报告]
发表于 2012-10-23 15:31 |只看该作者
看贴不顶!那是不行的!

论坛徽章:
0
75 [报告]
发表于 2013-12-18 12:45 |只看该作者
回复 1# tm_wb


    参考一下,学习学习。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
76 [报告]
发表于 2013-12-24 15:24 |只看该作者
逆天啦,它敢返回局部变量:
  1. /* private vector function */
  2. vector_t _create_vector(size_t t_typesize, const char* s_typename)
  3. {
  4.     vector_t t_newvector;

  5.     assert(t_typesize > 0);
  6.     assert(s_typename != NULL);

  7.     t_newvector._t_typesize = t_typesize;
  8.     memset(t_newvector._sz_typename, '\0', _ELEM_TYPE_NAME_SIZE+1);
  9.     strncpy(t_newvector._sz_typename, s_typename, _ELEM_TYPE_NAME_SIZE);
  10.     _unify_types(t_newvector._t_typesize, t_newvector._sz_typename);
  11.     t_newvector._pc_start = NULL;
  12.     t_newvector._pc_finish = NULL;
  13.     t_newvector._pc_endofstorage = NULL;
  14.     t_newvector._pfun_cmp = NULL;

  15.     return t_newvector;
  16. }
复制代码

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
77 [报告]
发表于 2013-12-24 15:55 |只看该作者
本帖最后由 yulihua49 于 2013-12-24 16:57 编辑
xianliang 发表于 2011-01-24 14:13
不造一下轮子,如何知道轮子为什么应该做成圆的,如何做成圆的?

这个轮子不得不造,没有类似的东西。

为了算法和容器独立,搞的好复杂。

为了在map中查找一个值:
t_i = algo_find_if(map_begin(&t_m), map_end(&t_m), _find_value);
有必要把头、尾都搅合进去吗?map是可以直接查找的啊,那么办,不就成了数组的顺序查找了吗?
map的迭代,比数组迭代,效率低得多。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
78 [报告]
发表于 2013-12-25 10:02 |只看该作者
本帖最后由 yulihua49 于 2013-12-25 10:08 编辑
yulihua49 发表于 2013-12-24 15:55
这个轮子不得不造,没有类似的东西。

为了算法和容器独立,搞的好复杂。


stl的map,采用K-V模型。
其功能、性能要比V(k),V(k(Vx,Vy,...))模型要差好多。
就是V包含K,k又包含V的一个或多个成分。不需要单独的k
直接的树查找,要比通过迭代器查找,快N倍。O()虽然没变,但其前边的系数要差好几倍。

论坛徽章:
0
79 [报告]
发表于 2013-12-25 13:58 |只看该作者
回复 76# yulihua49


    我一来看到这也惊了一下,返回局部变量,貌似有点说不过去

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
80 [报告]
发表于 2013-12-25 16:17 |只看该作者
本帖最后由 yulihua49 于 2013-12-25 16:18 编辑
d741963250 发表于 2013-12-25 13:58
回复 76# yulihua49

它这是可以的,就是别扭。
局部变量是可以返回的,不能返回的是局部变量的地址,地址里的内容会失效。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP