error: no match for ‘operator<’ in ‘__x < __y’ when trying to insert in two map

The compiler does not know in which order to insert keys in the map. You have to define some order relation for class Values.

You need to define operator < for your class. For example you can do it the following way or something else

class Values
{
private:
    std::string C_addr;
    int C_port;
    std::string S_addr;
    int S_port;
    int C_ID;

public:
    Values(std::string,int,std::string,int,int);
    void printValues();
    bool operator <( const Values &rhs ) const
    {
       return ( C_ID < rhs.C_ID );
    }
};

For your second map the key type is not compareable. map<Values,int> is essentially this
map<Values, int, std::less<Values>, std::allocator<std::pair<const Values, int>. Sinec you don't have an bool operator< for your Value type less will not compile.

So you can either define an bool operator< for your class or you create the map with an own comparison function.