linux下练习 c++ 函数模版例子

简介: //函数模版使用 //函数模版标准不支持参数默认值 #include #include using namespace std; template void sort(T* a,int n)//普通冒泡排序 { bool ch...
//函数模版使用
//函数模版标准不支持参数默认值
#include<iostream>
#include<cstring>
using namespace std;
template <typename T>
void sort(T* a,int n)//普通冒泡排序
{
	bool changed;
	do
	{
		changed=false;
		for(int i=1;i<n;i++)
		{
			if(a[i]<a[i-1])
			{
				swap(a[i],a[i-1]);
				changed=true;
			}
		}
		--n;
	}
	while(changed);
}
template <>//模版特化
void sort(const char* a[],int n)//普通冒泡排序
{
	bool changed;
	do
	{
		changed=false;
		for(int i=1;i<n;i++)
		{
			if(strcmp(a[i],a[i-1])<0)
			{
				swap(a[i],a[i-1]);
				changed=true;
			}
		}
		--n;
	}
	while(changed);
}
//template <typename T>
//void show(T t[],int n)
template <typename T,int n>
void show(T(&t)[n])
{
	//int n=sizeof(t)/sizeof(t[0]);//算出t的个数
	for(int i=0;i<n;i++)
		cout<<t[i]<<' ';
	cout<<endl;
}
template <typename T>
void show(T t)
{
		cout<<t<<endl;
}
int main()
{
	int a[5]={6,7,8,3,2};
	
	sort(a,5);//函数模版会自动匹配,不需要显式指定类型
	show(a);
	double d=12.345;
	show(d);
	char c[5]={'b','f','k','d','a'};
	sort(c,5);
	show(c);
	const char* ca[3]={"fc","ca","ab"};
	sort(ca,3);
	show(ca);
	return 0;
}


 

相关文章
|
算法 编译器 C++
模拟实现c++中的vector模版
模拟实现c++中的vector模版
|
存储 Linux
linux中的目录操作函数
本文详细介绍了Linux系统编程中常用的目录操作函数,包括创建目录、删除目录、读取目录内容、遍历目录树以及获取和修改目录属性。这些函数是进行文件系统操作的基础,通过示例代码展示了其具体用法。希望本文能帮助您更好地理解和应用这些目录操作函数,提高系统编程的效率和能力。
561 26
|
算法 C++ 容器
模拟实现c++中的list模版
模拟实现c++中的list模版
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
387 0
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
509 16
|
安全 C++
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
1104 6
|
Linux
【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
System V信号量的概念及其在Linux中的使用,包括 `semget()`、`semctl()`和 `semop()`函数的具体使用方法。通过实际代码示例,演示了如何创建、初始化和使用信号量进行进程间同步。掌握这些知识,可以有效解决多进程编程中的同步问题,提高程序的可靠性和稳定性。
1286 19
|
Linux Android开发 开发者
linux m、mm、mmm函数和make的区别
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
1233 18
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
895 13
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。