Comment puis-je vérifier si deux std::vector est uniquement contenir les mêmes éléments?

J'ai besoin d'un algorithme ou d'une bibliothèque standard la fonction de comparaison de deux éléments vectoriels, comme ci-dessous:

class Utility
{
    template <class T>
    static bool CheckIfVectorsEquivalent(   const std::vector<T> & Vec1,
                                            const std::vector<T> & Vec2)
    {
        //???
    }
};

De travail en vertu de l'spécifications suivantes:

std::vector<int> v1, v2, v3, v4, v5, v6, v7, v8;

//Returns false when not all the elements are matching between vectors
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v2.push_back(2);
v2.push_back(3);
v2.push_back(8);
Utility::CheckIfVectorsEquivalent(v1, v2);  //Must return false

//Returns true when all the elements match, even if the are not in the same order
v3.push_back(3);
v3.push_back(1);
v3.push_back(7);
v4.push_back(7);
v4.push_back(3);
v4.push_back(1);
Utility::CheckIfVectorsEquivalent(v3, v4);  //Must return true

//Returns false when one of the vectors is subset of the other one
v5.push_back(3);
v5.push_back(1);
v5.push_back(7);
v6.push_back(7);
v6.push_back(3);
v6.push_back(1);
v6.push_back(18);
v6.push_back(51);
Utility::CheckIfVectorsEquivalent(v5, v6);  //Must return false

//Returns true when the both vectors are empty
Utility::CheckIfVectorsEquivalent(v7, v8);  //Must return true

Est-il standard (avec TSL) manière de procéder? Si non, comment puis-je écrire cet algorithme? Il me confond trop.

OriginalL'auteur hkBattousai | 2012-05-08