欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C語言支持模板函數(shù)嗎 c語言中的模板

template 去掉換成c語言怎么換?沒學(xué)過c++

直接把class T換成你想要的數(shù)據(jù)類型,printf和scanf本身就是C的語句,不用改了。舉個例子,如果想要T是int型:

創(chuàng)新互聯(lián)專注于中大型企業(yè)的網(wǎng)站設(shè)計制作、成都做網(wǎng)站和網(wǎng)站改版、網(wǎng)站營銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開發(fā)的融合,累計客戶上千余家,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專注品牌網(wǎng)站設(shè)計和互聯(lián)網(wǎng)程序開發(fā),在前進(jìn)的路上,與客戶一起成長!

bool InputTSMatrix(int M, int y)

{

printf("輸入矩陣的行數(shù)、列數(shù)和非零元素個數(shù):");

scanf("%d%d%d",M.rows,M.cols,M.nzeroNums);

printf("請輸入非零元素對應(yīng)的行號、列號和相應(yīng)的元素值:\n");

for (int i = 1; i = M.nzeroNums; i++)

{

scanf("%d%d%d",M.data[i].r,M.data[i].c,M.data[i].v);

}

return true;

}

中間的,我覺得貌似沒什么要改的

在c語言中如何實現(xiàn)函數(shù)模板

各種用

C

語言實現(xiàn)的模板可能在使用形式上有所不同。現(xiàn)以一個求和函數(shù)

Sum

為例,用

C++

Template

可寫如下:

template

R

Sum(const

T

*array,

int

n)

{

R

sum

=

0;

for

(int

i

=

;

i

n

;

++i)

sum

+=

i;

return

sum;

}

如果不是內(nèi)置類型,該模板隱式地需要

有R

R::operator+=(T)運(yùn)算符可用。

1.

使用函數(shù)指針作為

Functor

替換者

Typedef

struct

tagAddClass

{

Void

(*add)(char*

r1,

const

char*

r2);

Int

elemSize;

Char

sum[MAX_ELEM_SIZE];

}

AddClass;

void

Sum(AddClass*

self,

const

char*

array,

int

n)

{

for

(int

i

=

;

i

n

;

++i)

self-add(self-sum,

array

+

i*self-elemSize);

}

使用時:

Void

AddInt(char*

r1,

const

char*

r2)

{

*(long*)r1

+=

*(int*)r2;

}

AddClass

addClass

=

{AddInt,

2,

};

Int

array[100];

Read(array);

Sum(addClass,

array,

100);

…..

2.

用宏作為Functor的替換者

#define

GenSumFun(SumFunName,

Add,

RetType,

ElemType)

RetType

SumFunName

(const

ElemType

*array,

int

n)

\

{

RetType

sum

=

0;

for

(int

i

=

;

i

n

;

++i)

Add(sum,

i);

return

sum;

}

使用時:

#define

AddInt(x,

y)

((x)

+=

(y))

GenSumFun(SumInt,

AddInt,

long,

int)

…..

Int

array[100];

Read(array);

Long

sum

=

SumInt(array,

100);

…..

3.

所有可替換參數(shù)均為宏

至少需要一個額外的文件(實現(xiàn)文件)為

impsum.c

/*

impsum.c

*/

RetType

FunName(const

ElemType

*array,

int

n)

{

RetType

sum

=

0;

for

(int

i

=

;

i

n

;

++i)

Add(sum,

i);

return

sum;

}

使用時:

#undef

RetType

#undef

FunName

#undef

ElemType

#undef

Add

#define

AddInt(x,

y)

((x)

+=

(y))

#define

RetType

long

#define

FunName

SumInt

#define

ElemType

int

#define

Add

AddInt

#include

impsum.c

…..

Int

array[100];

Read(array);

Long

sum

=

SumInt(array,

100);

4.

總結(jié):

第一種方法,易于跟蹤調(diào)試,但是效率低下,適用于對可變函數(shù)(函數(shù)指針)的效率要求不高,但程序出錯的可能性較大(復(fù)雜),模板函數(shù)(Sum)本身很復(fù)雜,模板參數(shù)也比較復(fù)雜(add)的場合。

第二種方法,效率高,但很難跟蹤調(diào)試,在模板函數(shù)和模板參數(shù)本身都很復(fù)雜的時候更是如此。

第三種方法,是我最近幾天才想出的,我認(rèn)為是最好的,在模板參數(shù)(Add)比較復(fù)雜時可以用函數(shù)(第二種也可以如此),簡單時可以用宏,并且,易于調(diào)試。在模板函數(shù)本身很復(fù)雜,而模板參數(shù)比較簡單時更為優(yōu)越。但是,可能有點繁瑣。

C語言模板函數(shù)與自定義函數(shù)的區(qū)別及優(yōu)缺點

C語言中有模板函數(shù)嗎? 模板不是c++中才提供的特性的嘛,大部分函數(shù)都是自定義函數(shù)。沒有什么優(yōu)點或者缺點吧,完全看函數(shù)自身的功能

網(wǎng)站名稱:C語言支持模板函數(shù)嗎 c語言中的模板
文章路徑:http://chinadenli.net/article18/dogsigp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、云服務(wù)器ChatGPT、網(wǎng)站營銷動態(tài)網(wǎng)站網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)