[C++] Easy Solution(Production Ready Code) using set with explanation using comments.
\nclass Solution {\npublic:\n    \n    /*\n    * Process String to apply rules\n    */\n    string processString(string str) {\n        int zero = 0;\n        \
```\nclass Solution {\npublic:\n    \n    /*\n    * Process String to apply rules\n    */\n    string processString(string str) {\n        int zero = 0;\n        \n        /*\n        * Separate local_name, "@"+domain_name. Setps:\n        * 1. get location of "@"\n        * 2. separate local_name using location of "@"\n        * 3. separate "@{domain_name}" string\n        */\n        int at_loc = str.find("@");\n        string local_name = str.substr(zero, at_loc);\n        string domain_name = str.substr(at_loc, str.length());\n        \n        /*\n        * Remove local_name after "+". Steps:\n        * 1. Find location of "+"\n        * 2. If plus exists(i.e. plus_loc != -1) then\n        * 3. Take local_name before "+"\n        */\n        int plus_loc = local_name.find("+");\n        if(plus_loc != -1)\n            local_name = local_name.substr(zero, plus_loc);\n        \n        /*\n        * Remove each dot in local_name. Steps:\n        * 1. Find location of "."\n        * 2. If dot exists then\n        * 3. Replace "." with blank string(i.e. "")\n        * 4. Find location of next dot\n        */\n        int dot_loc = local_name.find(".");\n        while(dot_loc != -1) {\n            local_name.replace(dot_loc, 1, "");\n            dot_loc = local_name.find(".");\n        }\n        \n        // Finally return local_name + domain_name\n        return local_name + domain_name;\n    }\n    \n    /*\n    * Process Each email and put unique values \n    * into set and finally return size of set\n    */\n    int numUniqueEmails(vector<string>& emails) {\n        /*\n        * Create a set since set stores only unique values \n        * and we need to return no. of unique values only\n        */\n        set<string> ans;\n        \n        /* \n\t\t* Process each input email and put processed \n        * value in set if it does not exist already.\n        */\n        for(auto email: emails) {\n            string proccessedEmail = processString(email);\n            if(ans.find(proccessedEmail) == ans.end()) {\n                ans.insert(proccessedEmail);\n            }\n        }\n        return ans.size();\n    }\n};\n```\n\nProcess each email and put processed email in a set if it already does not contain the processed email. Finally return the size of the set.\n\n*Do hit the upvote button if you like the solution or find it helpful.*\n\n**Thanks. Hope it helps.**\n~*Sadul Khod*
['C', 'C++']