char c1='A',c2='a';
cout<<\ c2=\ swap(c1,c2);
cout<<\ c2=\ cout<<\
//交换两个结构变量中的数据 student s1={1001,\ student s2={1011,\ cout<<\ \
cout< cout< cout<<\ cout<<\ \ cout< cout< //定义名为swap的函数模板用于交换两个变量中的数据 template T temp; temp=x; x=y; y=temp; } #include //声明函数模板的原型语句 template //定义一个结构类型 struct student { int n; char name[20]; float grade; }; //在main()函数中测试swap()函数模板 void main(void) { //交换两个int型变量中的数据 int m=3,n=5; cout<<\ n=\ swap(&m,&n); cout<<\ n=\ cout<<\ //交换两个double型变量中的数据 double x=3.5,y=5.7; cout<<\ y=\ swap(&x,&y); cout<<\ y=\ cout<<\ //交换两个char型变量中的数据 char c1='A',c2='a'; cout<<\ c2=\ swap(&c1,&c2); cout<<\ c2=\ cout<<\ //交换两个结构变量中的数据 student s1={1001,\ student s2={1011,\ cout<<\ \ cout< cout< swap(&s1,&s2); cout<<\ cout<<\ \ cout< cout< //定义名为swap的函数模板用于交换两个变量中的数据 template T temp; temp=*x; *x=*y; *y=temp; } #include //定义输入函数模板 template //定义输出函数模板 template //在main()函数中测试输入输出函数模板 void main(void) { //输入输出int型数据 int a,b; input(\ output(\ b=3*a; output(\ output(\ cout<<\ //输入输出double型数据 double x,y; input(\ output(\ y=2*x; output(\ 46 cout<<\ //输入输出char型数据 char c1; input(\ output(\ cout<<\ //输入输出字符串数据 char string[80]; input(\ output(\} #include //显示数组的函数模板 template //选择排序数组的函数模板 template for (i=0;i for (j=i+1;j<=size;j++) if (arr[i]<=arr[j]) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } //在main()函数中测试数组排序的函数模板 void main(void) { //用排序函数模板处理int型数组 cout<<\ int a[]={1,5,2,7,9,0,10,-1}; arr_put(a,7); sort(a,7); arr_put(a,7); //用排序函数模板处理double型数组 cout<<\ double x[]={1.2,2.1,1.414,1.732}; arr_put(x,3); sort(x,3); arr_put(x,3); //用排序函数模板处理char类型数组 cout<<\ char str[80]; cout<<\ cin>>str; int size=strlen(str); arr_put(str,size); sort(str,size); arr_put(str,size); } #include //显示数组的函数模板 template //选择法对数组排序的函数模板 template for (i=0;i for (j=i+1;j temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } //二分查找法的函数模板 template int found = 0; int high = size, low = 0, mid; mid = (high + low) / 2; cout<<\ while ((! found) && (high >= low)) { if (value == array[mid]) found = 1; else if (value < array[mid]) high = mid - 1; else low = mid + 1; mid = (high + low) / 2; } return((found) ? mid: -1); } //main()函数中使用处理数组的函数模板 void main(void) { //处理int型数组 int array[10]={1,3,5,7,9,2,4,6,8,10}; //显示数组初值 arr_put(array,10); //对数组排序并显示 47 sort(array,10); arr_put(array,10); //查找数组 cout<<\of search: \3, 10)< cout<<\of search: \2, 10)< cout<<\of search: \9, 10)< cout<<\of search: \5, x.set_value(7.5); cout<<\} #include const int SIZE = 100; //定义处理栈的类模板接口 template cout<<\ //处理字符串型数组 char ch1,str[]=\ int size=strlen(str); //显示数组初值 arr_put(str,size); //对数组排序并显示 sort(str,size); arr_put(str,size); //查找数组 cout<<\ cin>>ch1; cout<<\of search: \size)< #include //定义名为ex_class的类模板 template T value; public: ex_class(T v) { value=v; } void set_value(T v) { value=v; } T get_value(void) {return value;} }; //main()函数中测试ex_class类模板 void main(void) { //测试int类型数据 ex_class cout<<\ cout<<\ //测试char类型数据 ex_class cout<<\ ch.set_value('a'); cout<<\ //测试double类型数据 ex_class cout<<\ public: stack(void) { tos = 0; cout << \ } ~stack(void) { cout << \ } void push(T); T pop(void); }; //定义栈的成员函数 template if(tos==SIZE) { ch1, cout << \ return; } stck[tos++] = i; } template if(tos==0) { cout << \ return 0; } return stck[--tos]; } //main()函数中测试stack类模板 void main(void) { //处理int类型数据的栈 cout<<\ stack cout << a.pop() << \ cout << a.pop() << endl; //处理double类型数据的栈 cout<<\ stack cout << b.pop() << \ 48 cout << b.pop() < //处理char类型数据的栈 cout<<\ stack for(int i=0; i<10; i++) c.push((char) 'A' + i); for(i=0; i<10; i++) cout < #include //定义名为ex_class的类模板 template T1 value1; T2 value2; public: ex_class(T1 v1,T2 v2) { value1=v1; value2=v2; } void set_value(T1 v1,T2 v2) { value1=v1; value2=v2; } void put_value(void) { cout<<\ cout<<\ } }; //main()函数中测试ex_class类模板 void main(void) { //测试int和double类型数据 ex_class cout<<\ a.put_value(); a.set_value(100,3.14); a.put_value(); //测试double和int类型数据 ex_class cout<<\ b.put_value(); b.set_value(1.732,100); b.put_value(); //测试char和int类型数据 ex_class cout<<\ c.put_value(); c.set_value('B',100); c.put_value(); //测试int和int类型数据 ex_class cout<<\ d.put_value(); d.set_value(100,200); d.put_value(); } #include #include using namespace std; //创建一个list容器的实例LISTINT typedef list //创建一个list容器的实例LISTCHAR typedef list void main(void) { //-------------------------- //用list容器处理整型数据 //-------------------------- //用LISTINT创建一个名为listOne的list对象 LISTINT listOne; //声明i为迭代器 LISTINT::iterator i; //从前面向listOne容器中添加数据 listOne.push_front (2); listOne.push_front (1); //从后面向listOne容器中添加数据 listOne.push_back (3); listOne.push_back (4); //从前向后显示listOne中的数据 cout<<\ for (i = listOne.begin(); i != listOne.end(); ++i) cout << *i << \ cout << endl; //从后向后显示listOne中的数据 LISTINT::reverse_iterator ir; cout<<\ for (ir =listOne.rbegin(); ir!=listOne.rend();ir++) { cout << *ir << \ } cout << endl; //使用STL的accumulate(累加)算法 int result = accumulate(listOne.begin(), listOne.end(),0); cout<<\ cout<<\ //-------------------------- //用list容器处理字符型数据 //-------------------------- //用LISTCHAR创建一个名为listOne的list对象 LISTCHAR listTwo; 49 //声明i为迭代器 LISTCHAR::iterator j; //从前面向listTwo容器中添加数据 listTwo.push_front ('A'); listTwo.push_front ('B'); //从后面向listTwo容器中添加数据 listTwo.push_back ('x'); listTwo.push_back ('y'); //从前向后显示listTwo中的数据 cout<<\ for (j = listTwo.begin(); j != listTwo.end(); ++j) cout << char(*j) << \ cout << endl; //使用STL的max_element算法求listTwo中的最大元素并显示 j=max_element(listTwo.begin(),listTwo.end()); cout << \maximum element in listTwo is: \} #include using namespace std; typedef vector //测试vector容器的功能 void main(void) { //vec1对象初始为空 INTVECTOR vec1; //vec2对象最初有10个值为6的元素 INTVECTOR vec2(10,6); //vec3对象最初有3个值为6的元素 INTVECTOR vec3(vec2.begin(),vec2.begin()+3); //声明一个名为i的双向迭代器 INTVECTOR::iterator i; //从前向后显示vec1中的数据 cout<<\ for (i =vec1.begin(); i !=vec1.end(); ++i) cout << *i << \ cout << endl; //从前向后显示vec2中的数据 cout<<\ for (i =vec2.begin(); i !=vec2.end(); ++i) cout << *i << \ cout << endl; //从前向后显示vec3中的数据 cout<<\ for (i =vec3.begin(); i !=vec3.end(); ++i) cout << *i << \ cout << endl; 50 //测试添加和插入成员函数 vec1.push_back(2); vec1.push_back(4); vec1.insert(vec1.begin()+1,5); vec1.insert(vec1.begin()+1,vec3.begin(),vec3.end()); cout<<\ for (i =vec1.begin(); i !=vec1.end(); ++i) cout << *i << \ cout << endl; //测试赋值成员函数 vec2.assign(8,1); cout<<\ for (i =vec2.begin(); i !=vec2.end(); ++i) cout << *i << \ cout << endl; //测试引用类函数 cout<<\ cout<<\ cout<<\ cout<<\ //测试移出和删除 vec1.pop_back(); vec1.erase(vec1.begin()+1,vec1.end()-2); cout<<\ for (i =vec1.begin(); i !=vec1.end(); ++i) cout << *i << \ cout << endl; //显示序列的状态信息 cout<<\ cout<<\ cout<<\ cout<<\ //vector序列容器的运算 cout<<\ cout<<\} #include using namespace std; typedef deque //从前向后显示deque队列的全部元素 void put_deque(INTDEQUE deque, char *name) { INTDEQUE::iterator pdeque; cout << \ for(pdeque = deque.begin(); pdeque != deque.end(); pdeque++) cout << *pdeque << \ cout< //测试deqtor容器的功能