相关疑难解决方法(0)

适用于C的良好STL类库

什么是C的好库,包括矢量,deques,堆栈,hashmap,treemaps,sets等数据结构?简单C,请和平台无关.

c architecture data-structures

46
推荐指数
3
解决办法
7212
查看次数

使用宏"高阶函数"生成器在C中进行函数编程

请注意,因为这是一个问题的地狱;-)

我想在C中使用模板函数进行泛型集合操作(​​如search,foreach等),同时保持编译器静态类型检查.当你使用像这个例子中的简单回调时,这是相当简单的:

#define MAKE_FOREACH(TYPE)\
void foreach_##TYPE (TYPE[n] array, int n, void(*f)(TYPE)) {\
  for(int i = 0; i < n; i++) {\
    f(array[i]);\
  }\
}
Run Code Online (Sandbox Code Playgroud)

所以你可以这样做:

MAKE_FOREACH(int)
MAKE_FOREACH(float)

void intcallback(int x){
  printf("got %d\n", x);
}

void floatcallback(float x){
  printf("got %f\n", x);
}

int main(){
  int[5] iarray = {1,2,3,4,5};
  float[5] farray = {1.0,2.0,3.0,4.0,5.0};
  foreach_int(iarray, 5, intcallback);
  foreach_float(farray, 5, floatcallback);
}
Run Code Online (Sandbox Code Playgroud)

如果我想用返回类型实现回调,例如创建一个"map"函数,我可以这样做:

#define MAKE_MAP(TYPE, RTYPE)\
RTYPE* map_##TYPE (TYPE[n] array, int n, RTYPE(*f)(TYPE)) {\
  RTYPE* result = (RTYPE*)malloc(sizeof(RTYPE)*n);\
  for(int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c functional-programming c-preprocessor

33
推荐指数
1
解决办法
5924
查看次数

C语言中的基本数据结构库,例如Queue

问题:为队列找到正确的数据结构:

 #include <stdio.h>                                                                                                                                                             
 #include <stdlib.h>
 #include <stdarg.h>
 #include <time.h>

 int main(int argc, const char *argv[])
 {
     Queue q;
     ch ='A';
     for (int k = 0; int k < 4; int k++) {
         q.addQ(ch);
         ch++;
         q.addQ(ch);
         ch=q.front();
         q.removeQ();
     }
     return 0;
 }
Run Code Online (Sandbox Code Playgroud)

我试图编译它,但队列是未声明的:

$ gcc -o Qu_1 -g q_queue.c
q_queue.c: In function 'main':
q_queue.c:8: error: 'Queue' undeclared (first use in this function)
Run Code Online (Sandbox Code Playgroud)

问题:基本数据结构的库是什么,例如示例中的队列?

c queue data-structures

7
推荐指数
2
解决办法
4万
查看次数