C++ Simple Solution || Easy to understand
\nclass CombinationIterator {\npublic:\n    vector<string> v;int i=0;\n    CombinationIterator(string characters, int combinationLength) {\n        getCombinati
```\nclass CombinationIterator {\npublic:\n    vector<string> v;int i=0;\n    CombinationIterator(string characters, int combinationLength) {\n        getCombination(characters, combinationLength,0, "");\n    }\n    \n    void getCombination(string s, int c, int start, string out){\n        if(s.empty()) return;\n        if(out.size() == c) {v.push_back(out);return;}\n        for(int i=start;s[i];i++) getCombination(s, c,i+1, out+s[i]);\n    }\n    \n    string next() {\n        return v[i++];\n    }\n    \n    bool hasNext() {\n        return v.size() > i;\n    }\n};\n\n```
['Recursion', 'C', 'C++']