C++ Class Templates

Sort by

recency

|

242 Discussions

|

  • + 0 comments

    My solution for C++14 as it gives time exceed due to stupidly using endl everytime (don't know why it does not happen to C++11)

    struct FastIO {
        FastIO() {
            ios::sync_with_stdio(false);
            cin.tie(nullptr);
        }
    };
    
    static FastIO fastio;
    
    
    template<typename T>
    class AddElements {
        T value;
    public:
        AddElements(T val) : value(val) {}
        T add(T val) const {
            return value + val;
        }
    };
    
    template<>
    class AddElements<string> {
        string value;
    public:
        AddElements(string val) : value(val) {}
        string concatenate(const string& val) const {
            return value+val;
        }
    };
    
  • + 0 comments
    template<typename X>
    class AddElements
    {
        X element;
    public:
        AddElements(X arg) : element(arg) {}
        
        X add(X arg) { element += arg; return element; }
    };
    
    template<>
    class AddElements<string>
    {
        string element;
    
    public:
        AddElements(string arg) : element(arg) {}
        
        string concatenate(string arg) { element = element + arg; return element; }
    };
    
  • + 0 comments

    you are required to use class templates to create a class that can work with different data types. The task demonstrates how templates help achieve generic programming in C++. Khelo24bet Register

  • + 0 comments

    Answer

    template<class T>
    class AddElements {
    public :
        AddElements(T element1) {
            m_element1 = element1;
        }
        T add(T element2) {
            m_element2 = m_element1 + element2;
            return m_element2;
        }
        T concatenate(T element2) {
            m_element2 = m_element1 + element2;
            return m_element2;
        }
        T m_element1;
        T m_element2;
    };
    
  • + 0 comments

    include

    include

    using namespace std; template class AddElements { T element; public: AddElements(T arg) : element(arg) {} T add(T arg) { return element + arg; } }; template <> class AddElements { string element; public: AddElements(const string &arg) : element(arg) {} string concatenate(const string &arg) { return element + arg; } };

    int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n;

    string type;
    for (int i = 0; i < n; ++i) {
        cin >> type;
    
        if (type == "int") {
            int a, b;
            cin >> a >> b;
            AddElements<int> myint(a);
            cout << myint.add(b) << '\n';
        } 
        else if (type == "float") {
            double a, b;
            cin >> a >> b;
            AddElements<double> myfloat(a);
            cout << myfloat.add(b) << '\n';
        } 
        else if (type == "string") {
            string a, b;
            cin >> a >> b;
            AddElements<string> mystring(a);
            cout << mystring.concatenate(b) << '\n';
        }
    }
    
    return 0;
    

    }