Clean C++ code => Iterator for Combination
```\nclass CombinationIterator {\npublic:\n    string c;\n    vector combinations;\n    int index = 0;\n    \n    void helper(string path, int start, int k){\n 
```\nclass CombinationIterator {\npublic:\n    string c;\n    vector<string> combinations;\n    int index = 0;\n    \n    void helper(string path, int start, int k){\n        \n        if(path.size() == k){\n            combinations.push_back(path);\n            return;\n        }\n        \n        for(int i = start; i < c.size(); i++){\n            path.push_back(c[i]);\n            helper(path, i + 1, k);\n            path.pop_back();\n        }\n    }\n    \n    \n    CombinationIterator(string characters, int combinationLength) {\n        c = characters;\n        helper("", 0, combinationLength);\n    }\n    \n    string next() {\n        string val = combinations[index];\n        index++;\n        return val;\n    }\n    \n    bool hasNext() {\n        return index != combinations.size();\n    }\n};\n
[]