首页app攻略c++怎么定义常量 c++怎么定义字符串并输出开头字母

c++怎么定义常量 c++怎么定义字符串并输出开头字母

圆圆2025-09-07 10:01:15次浏览条评论

函数模板是C泛型编程的基础,通过类型参数化实现通用算法。使用templatelt;typename Tgt;定义,可编写适用于多种类型的函数,如myMax、printPair、printArray和bubbleSort,编译器根据调用时的实际类型自动实例化具体函数,提升代码复用性与灵活性。

c++如何定义函数模板实现通用算法

在C中,要实现通用算法,函数模板就是那个枕头的基础。它允许我们编写一份通用的函数代码,这份代码可以处理各种不同的数据类型,而为每一种类型都重新写一遍。简单来说,就是通过类型参数化,让你的函数变得“聪明”起来,能够适应不同的输入类型,从而实现真正相似的泛型编程。

函数模板的核心思想,其实就是把类型参数来传入。你注意看,我们平时写函数,参数是值;现在,我们让参数可以是“类型”。这样的数量,比如你要写一个比较大小的函数,传统做法可能要写max(int, int)登录后复制,max(double, double)登录后复制,甚至max(std::string,std::string)登录后复制。但有了函数模板,你只需要写一个maxlt;Tgt;(T a, T b)登录后复制,编译器就可以根据你生成的实际类型,自动生成对应的具体函数。极简智能王

极简智能-智能聊天AI绘画,还可以创作、编写、翻译、编写代码等多种功能,满足用户生活和工作的多方面需求 27查看详情

定义了一个函数模板,语法上非常可理解:template lt;typename Tgt;登录后复制或者template lt;class Tgt;登录后复制,这两种写法是等价的推荐,typename登录后复制更,因为它明确表示T登录后复制是一个类型。

#include lt;iostreamgt;#include lt;stringgt;#include lt;vectorgt;#include lt;algorithmgt; // for std::sort// 示例1: 最简单的通用max函数模板 lt;typename Tgt;T myMax(T a, T b) { return (a gt; b) ? a : b;}// 示例2: 携带多个类型参数的函数模板模板 lt;typename T1, typename T2gt;void printPair(T1 val1, T2 val2) { std::cout lt;lt; quot;Pair: quot; lt;lt; val1 lt;lt; quot;, quot; lt;lt; val2 lt;lt; std::endl;}//译文 3:非类型模板参数,比如用于固定大小阵列//这种方式在 C 11/14 之前比较常见,现在通常用 std::arraytemplate lt;typename T, int Ngt;void printArray(const T (amp;arr)[N]) { // 注意这里引用内存的写法 std::cout lt;lt;quot;Array elements (quot;lt;lt;N lt;lt;quot;):quot;;for (int)我=0; i lt; N; i) { std::cout lt;lt; arr[i] lt;lt; quot; quot;; } std::cout lt;lt; std::endl;}// 文本4: 一个简单的通用排序函数 (虽然实际中会用std::sort)template lt;typename Tgt;void bubbleSort(std::vectorlt;Tgt;amp; vec) { for (size_t i = 0; i lt; vec.size(); i) { for (size_t j = 0; j lt; vec.size() - 1 - i; j) { if (vec[j] gt; vec[j 1]) { T temp = vec[j]; vec[j] = vec[j 1]; vec[j 1] = temp; } } }}int main() { std::cout lt;lt; quot;int 的最大值: quot; lt;lt; myMax(5, 10) lt;lt; std::endl; std::cout lt;lt; quot;double 的最大值: quot; lt;lt; myMax(3.14, 2.71) lt;lt; std::endl; std::cout lt;lt; quot;string 的最大值: quot; lt;lt; myMax(std::string(quot;worldquot;), std::s

tring(quot;helloquot;)) lt;lt; std::endl; printPair(10, quot;C quot;); printPair(3.14, true); int intArray[] = {1, 5, 2, 8}; printArray(intArray); std::vectorlt;intgt; intVec = {5, 2, 9, 1, 7}; std::cout lt;lt; quot;原始向量: quot;; for (int x : intVec) std::cout lt;lt; x lt;lt; quot; quot;; std::cout lt;lt; std::endl; bubbleSort(intVec); std::cout lt;lt; quot;排序向量: quot;; for (int x : intVec) std::cout lt;lt; x lt;lt; quot; quot;; std::cout lt;lt; std::endl; std::vectorlt;std::stringgt; strVec = {quot;bananaquot;, quot;applequot;, quot;cherryquot;}; std::cout lt;lt; quot;原始字符串向量: quot;; for (const std::stringamp; s : strVec) std::cout lt;lt;s lt;lt;quot;quot;;std::cout lt;lt;std::登录后复制

以上就是C定义如何函数模板实现通用算法的详细内容,更多请关注乐哥常识网其他相关文章!

C++如何定义函数模
如何看循环次数 循环次数查询怎么查
相关内容
发表评论

游客 回复需填写必要信息