使用类模板添加不同项目的 C++ 程序

c++server side programmingprogramming

假设我们想要创建一个可以添加两个整数、两个浮点数和两个字符串的类(字符串加法基本上是连接字符串)。首先,我们取一个数字 n 作为输入,表示有 n 个不同的操作。在每个操作中,第一个项目是类型 [int, float, string],第二个和第三个是两个操作数。所以每行将包含三个元素。我们必须读取它们并执行上述操作。

所以,如果输入是这样的

5
int 5 7
int 6 9
float 5.25 9.63
string hello world
string love C++

那么输出将是

12
15
14.88
helloworld
loveC++

为了解决这个问题,我们将遵循以下步骤 −

  • 使用类模板定义一个名为 AddItems 的类。它有两个函数 add() 和 concatenate()。add() 将添加整数和浮点数,而 concatenate() 将连接字符串。

  • 从主方法中,执行以下操作

  • 用于初始化 i := 0,当 i < n,更新(将 i 增加 1),执行:

    • 类型 := 当前类型

    • 如果类型与"float"相同,则:

      • 取两个操作数 e1 和 e2

      • 创建一个名为 myfloat 的 float 类型的 AddItems 对象,其中包含项 e1

      • 调用 myfloat.add(e2) 并显示

    • 否则,当类型与"int"相同时,则:

      • 取两个操作数 e1 和 e2

      • 创建一个名为 myint 的 float 类型的 AddItems 对象,其中包含项 e1

      • 调用myint.add(e2) 并显示

    • 否则,当类型与"string"相同时,则:

      • 取两个操作数 e1 和 e2

      • 创建一个名为 mystring 的浮点型 AddItems 对象,其中包含项目 e1

      • 调用 mystring.concatenate(e2) 并显示

示例

让我们看看下面的实现以便更好地理解 −

#include <iostream>
using namespace std;
template <class T>
class AddItems {
    T element;
  public:
    AddItems (T arg) {
        element=arg;
    }
    T add (T e2) {
        return element+e2;
    }
    T concatenate (T e2) {
        return element+e2;
    }
};
int main(){
    int n,i;
    cin >> n;
    for(i=0;i<n;i++) {
        string type;
        cin >> type;
        if(type=="float") {
            float e1,e2;
            cin >> e1 >> e2;
            AddItems<float> myfloat (e1);
            cout << myfloat.add(e2) << endl;
        }
        else if(type == "int") {
            int e1, e2;
            cin >> e1 >> e2;
            AddItems<int> myint (e1);
            cout << myint.add(e2) << endl;
        }
        else if(type == "string") {
            string e1, e2;
            cin >> e1 >> e2;
            AddItems<string> mystring (e1);
            cout << mystring.concatenate(e2) << endl;
        }
    }
}

输入

5
int 5 7
int 6 9
float 5.25 9.63
string hello world
string love C++

输出

12
15
14.88
helloworld
loveC++

相关文章