✅ [c++]  || Backtracking
\nclass CombinationIterator {\npublic:\n    vector<string> arr;\n    int pos = 0;\n    \n    void solve(string &s, int len, int pos, string &op){\n        if(po
```\nclass CombinationIterator {\npublic:\n    vector<string> arr;\n    int pos = 0;\n    \n    void solve(string &s, int len, int pos, string &op){\n        if(pos==s.size()){\n            if(op.size()==len) arr.push_back(op);\n            return;\n        }\n\t\t//included\n        op.push_back(s[pos]);\n        solve(s,len,pos+1,op);\n        op.pop_back();\n\t\t//not included\n        solve(s,len,pos+1,op);\n    }\n    \n    CombinationIterator(string characters, int combinationLength) {\n        string op = "";\n        solve(characters, combinationLength, 0, op);\n    }\n    \n    string next() {\n        string ans = arr[pos++];\n        return ans;\n    }\n    \n    bool hasNext() {\n        return pos<arr.size();\n    }\n};\n\n/**\n * Your CombinationIterator object will be instantiated and called as such:\n * CombinationIterator* obj = new CombinationIterator(characters, combinationLength);\n * string param_1 = obj->next();\n * bool param_2 = obj->hasNext();\n */\n```\nPlease **UPVOTE**
['Backtracking', 'C', 'C++']