Étant donné le scénario ci-dessous, j'ai une liste d'éléments qui pourraient avoir des éléments en double. Je souhaite filtrer l'article, afin d'imprimer le seul élément unique. Au lieu de dupliquer une liste qui supprime l'élément dupliqué, j'ai essayé de les insérer dans std :: set et std :: hash_set. Néanmoins, je n'ai trouvé aucun exemple utile pour effectuer l'opération.Comment implémenter std :: set ou std :: hash_set pour filtrer l'élément dupliqué dans une liste de tableaux?
D'où j'espère demander votre avis sur le code suivant:
#include <list>
//--> A struct to store software name and version
typedef struct tagSWVERStruct{
TCHAR szSWName[255];
TCHAR szVersion[255];
}SWVERSIONSTRUCT, *LPSWVERSIONSTRUCT;
//--> A list of struct to store software name and version
typedef std::list<SWVERSIONSTRUCT> LISTSWVERSION, *PLISTSWVERSION;
void main()
{
LISTSWVERSION swList;
SWVERSIONSTRUCT svSW1, svSW2, svSW3, svSW4;
CString szVersion, szName;
//Assign value
_tcscpy_s(svSW1.szSWName, _T("Adapter 1"));
_tcscpy_s(svSW2.szSWName, _T("Adapter 2"));
_tcscpy_s(svSW3.szSWName, _T("Adapter 1"));
_tcscpy_s(svSW4.szSWName, _T("Adapter 3"));
_tcscpy_s(svSW1.szVersion, _T("1.0.0"));
_tcscpy_s(svSW2.szVersion, _T("2.0.0"));
_tcscpy_s(svSW3.szVersion, _T("1.0.0"));
_tcscpy_s(svSW4.szVersion, _T("3.0.0"));
swList.push_back(svSW1);
swList.push_back(svSW2);
swList.push_back(svSW3);
swList.push_back(svSW4);
//print all the item out
LISTSWVERSION::iterator it = swList.begin();
for(; it!=swList.end(); ++it){
_tprintf(_T("%s version = %s\n"), (*it).szSWName, (*it).szVersion);
}
}
/*******
Output:
Adapter 1 version = 1.0.0
Adapter 2 version = 2.0.0
Adapter 1 version = 1.0.0
Adapter 3 version = 3.0.0
Expected Output:
Adapter 1 version = 1.0.0
Adapter 2 version = 2.0.0
Adapter 3 version = 3.0.0
********/
eh? vous n'utilisez pas std :: set du tout –
remplacez std :: list' par 'std :: set' et' push_back' par 'insert' et vous êtes prêt à partir. Voir la réponse de Dauphic. – rubenvb
** hash_set **: http://www.sgi.com/tech/stl/hash_set.html/ ** set **: http://www.sgi.com/tech/stl/set.html – log0