编写一个函数模板,要求它返回两个值中的最小者 2) 以下是一个整数栈类的定义: 类堆栈 { 公共: 堆栈(); ~堆栈(); Push(int)); int流行(); 私人: int堆栈大小(]; int服务条款; }; 编写一个栈的类模板(包括其成员函数定义),以便为任何类型的对象提供栈结构数据 操作。并在应用程序中创建整数栈、字符栈和浮 编写一程序,让用户自由地从键盘上输入整数,直到输入数字0时结束。把用户输入的 数据保存在模板类Vector<int>定义的对象中,并对用户输入的所有数进行排序输出。在 向显示器进行输出时,要求用一下3种方式实现: a) 仅使用Vector<int>的相关成员函数,不使用迭代器进行输出;使用迭代器自己编程输出,使用STL提供的通用算法for_each进行输出
时间: 2024-02-12 10:03:28 浏览: 54
1) 函数模板的定义如下:
```
template <typename T>
T min(T a, T b) {
return a < b ? a : b;
}
```
2) 栈类模板的定义如下:
```
template <typename T>
class Stack {
public:
Stack();
~Stack();
void Push(T);
T Pop();
private:
int stackSize;
T* stackArray;
};
template <typename T>
Stack<T>::Stack() {
stackSize = 0;
stackArray = new T[100];
}
template <typename T>
Stack<T>::~Stack() {
delete [] stackArray;
}
template <typename T>
void Stack<T>::Push(T val) {
stackArray[stackSize++] = val;
}
template <typename T>
T Stack<T>::Pop() {
return stackArray[--stackSize];
}
```
3) 程序如下:
```
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v;
int num;
while (true) {
cin >> num;
if (num == 0) break;
v.push_back(num);
}
sort(v.begin(), v.end());
// 第一种方式
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl;
// 第二种方式
for (auto it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
// 第三种方式
for_each(v.begin(), v.end(), [](int x){ cout << x << " "; });
cout << endl;
return 0;
}
```
阅读全文