C言語汎型データ構造テンプレート(C言語汎型チェーン(list)、汎型行列(queue)、汎型スタック(stack)、汎型配列(array)))
18570 ワード
前の時間はc言語の汎型構造とthis針の実現について話しましたが、今回はよく使われるデータ構造の一般テンプレートをいくつか書きました.国内でダウンロード:https://gitee.com/xunanmu/c_laguage.template.git ギthubダウンロード:https://github.com/xunanmu/c_laguage.template.git ファイルレベル
注意:このソースはgccコンパイラにしか適用されません.注意:このソースはgccコンパイラにしか適用されません.注意:このソースはgccコンパイラにしか適用されません.
array汎型テンプレートの例
注意:このソースはgccコンパイラにしか適用されません.注意:このソースはgccコンパイラにしか適用されません.注意:このソースはgccコンパイラにしか適用されません.
-----templata.h
┆
-----array.h
┆
-----stack.h
┆
-----queue.h
┆
-----lsit.h
すべてのテンプレートはマクロで実装されています.以下は関数を使ってドキュメントを紹介します.また、C言語の一般テンプレートC言語テンプレートとthisポインタarray.h stack.h queue.h list.harray汎型テンプレートの例
#include
#include "array.h"
ARRAY_TYPE_SET(char);
typedef struct person Person;
ARRAY_TYPE_SET(Person);
struct person{
char name[8];
char sex[4];
int age;
}person_3[]={
{" "," ",20},
{" "," ",35},
{" "," ",16},
{" "," ",22},
{" "," ",18},
};
int main() {
/********array ******************/
array(char) test=new(array(char));
for (char i = 'A'; i < 'H'; ++i) {
test.push_back(i);
}
for (char i = 'A'; i < 'H'; ++i) {
test.push_back(i);
}
void print_char(char c);
test.traversal(print_char);
test.sort().traversal(print_char).reverse().traversal(print_char);
/*********array ***************/
array(Person) _static=new(array(Person));
_static.setArray(person_3, 5, 5,false);
void print_person(Person one);
_static.sort().traversal(print_person).reverse().traversal(print_person);
/*** , ***/
int agecmp(const void* one,const void* two);
_static.setcmp(agecmp);
_static.sort().traversal(print_person).reverse().traversal(print_person);
test.delete();
return 0;
}
void print_char(char c) {
printf("%c ", c);
}
void print_person(Person one) {
printf("
", one.name, one.sex, one.age);
}
int agecmp(const void *one, const void *two) {
return ((Person *) one)->age > ((Person *) two)->age;
}
実行結果A B C D E F G A B C D E F G
A A B B C C D D E E F F G G
G G F F E E D D C C B B A A
< , ,20>
< , ,22>
< , ,16>
< , ,35>
< , ,18>
< , ,18>
< , ,35>
< , ,16>
< , ,22>
< , ,20>
< , ,16>
< , ,18>
< , ,20>
< , ,22>
< , ,35>
< , ,35>
< , ,22>
< , ,20>
< , ,18>
< , ,16>
ここにはたくさんのプログラミング本があります.