社区
C语言
帖子详情
c语言实现stl
zengjie_0_2001
2006-11-03 08:29:29
请问怎么用c实现stl
用宏?
类似这样:
#define int ok
struct list
{
#ifdef int
int i;
#elifdef char
char str;
#else
char *string;
#endif
struct list *next;
};
...全文
447
6
打赏
收藏
c语言实现stl
请问怎么用c实现stl 用宏? 类似这样: #define int ok struct list { #ifdef int int i; #elifdef char char str; #else char *string; #endif struct list *next; };
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rickerliang
2006-11-05
打赏
举报
回复
~~
youngphoneix
2006-11-05
打赏
举报
回复
这是我的一个开源项目,目的就是用C实现STL
http://gforge.osdn.net.cn/projects/ylib/
adintr
2006-11-04
打赏
举报
回复
C 没有操作符重载,如何实现 iterator, functor?
mLee79
2006-11-04
打赏
举报
回复
C 比stl自由多了, 用啥 stl , 最简单的可以这样 ....
#include <stdio.h>
#include <stdlib.h>
#define XDS_slist_init( __h__ ) ((__h__)->xd_next = (__h__))
#define XDS_slist_erase_after( __n__ , __f__ ) \
do { \
void* __p_next_node__ = (void*)(__n__)->xd_next; \
(__n__)->xd_next = (__n__)->xd_next->xd_next; \
__f__ ( __p_next_node__ ) ; \
} while(0)
#define XDS_slist_pop_front( __h__ , __f__ ) XDS_slist_erase_after( __h__ , __f__ )
#define XDS_slist_insert_after( __n__ , __p__ ) \
do { \
(__p__)->xd_next = (__n__)->xd_next; \
(__n__)->xd_next = (__p__); \
} while(0)
#define XDS_slist_push_front( __h__ , __p__ ) XDS_slist_insert_after( __h__ , __p__ )
#define XDS_slist_cleanup( __h__ , __f__ ) \
do { \
void* __p_first_node__ ; \
while( 1 ) \
{ \
XDS_slist_pop_front( __h__ , __p_first_node__ = ); \
if( (__h__) == __p_first_node__ ) break; \
__f__ ( __p_first_node__ ); \
} \
} while(0)
#define XDS_slist_for_each( __h__ , __n__ ) \
for( (__n__) = (__h__)->xd_next; (__h__) != (__n__); (__n__) = (__n__)->xd_next )
struct testList
{
struct testList * xd_next;
int xxTmmd;
};
void foobar()
{
int i;
struct testList l , *p;
XDS_slist_init( &l );
for( i = 0; i < 10; ++i )
{
if( NULL == ( p = malloc( sizeof( *p ) ) ) )
exit(2);
p->xxTmmd = i;
XDS_slist_push_front( &l , p );
}
XDS_slist_for_each( &l , p )
printf( "%d --> " , p->xxTmmd );
printf( "NULL\n" );
p = l.xd_next->xd_next;
XDS_slist_erase_after( p , free );
XDS_slist_for_each( &l , p )
printf( "%d --> " , p->xxTmmd );
printf( "NULL\n" );
XDS_slist_cleanup( &l , free );
}
int main()
{
foobar();
}
chenzhichao2008
2006-11-04
打赏
举报
回复
你是要实现模板吧
agaric
2006-11-03
打赏
举报
回复
... 顶多用指针来装箱拆箱吧,反正不爽.
C 语言版的
stl
简单
实现
为了在
C语言
中
实现
类似
STL
的功能,程序员们会创建自己的集合库,如你提到的“
C语言
版的
stl
简单
实现
”。这个库可能是为了在C项目中引入类似
STL
的便利性,例如提供数组、链表、映射等数据结构以及相关的操作。 在C++...
stl
模板库的
c语言
实现
这个“libc
stl
-2.3.0”项目是一个尝试用纯
C语言
来
实现
C++
STL
的库,这对于理解和学习C++
STL
的工作原理以及C与C++在数据结构和算法上的差异非常有价值。 首先,让我们来看看
STL
中的一些关键组件: 1. **Map**:这...
c语言
的
stl
标准模板库
C语言
的
STL
(Standard Template Library,标准模板库)是C++编程中极其重要的一个部分,虽然标题提及“
C语言
”,但
STL
实际上是C++的一部分。
STL
提供了一组高效、可重用的容器、算法和迭代器,极大地提高了C++程序员...
C语言
版
STL
然而,由于
C语言
本身并不支持模板和类等面向对象特性,因此,
C语言
版的
STL
(libc
stl
)是一个将C++
STL
的概念和设计应用于
C语言
的尝试,目的是为C程序员提供类似的功能,以提高代码的效率和可维护性。 在libc
stl
中,...
C语言
版的
STL
,包含set,list,map等基本数据结构和算法.zip
在
C语言
实现
中,这可能通过结构体和指针来
实现
,其中每个元素都有指向前后元素的指针。 3. **Map**: Map是
STL
中的另一种关联容器,它将键值对映射到关联的值。
C语言
实现
可能使用平衡二叉搜索树(如AVL树或红黑树)...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章