gpt4 book ai didi

c++ - 如何实现 std::set 或 std::hash_set 来过滤数组列表中的重复项?

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:24 25 4
gpt4 key购买 nike

鉴于以下情况,我有一个项目列表,其中可能有一些重复的项目。我想过滤项目,打印唯一的唯一项目。

我没有复制删除重复项的列表,而是尝试将它们插入到 std::set 和 std::hash_set 中。然而,我没有找到执行该操作的有用示例。

因此希望就以下代码征求大家的意见:

#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
********/

最佳答案

我可能不明白,但是如果你想将 std::list 的元素复制到 std::set 中,你可以使用 std::copy 带有 inserter

std::list<int> list;
list.push_back(1);
list.push_back(2);
list.push_back(2);
list.push_back(3);

std::set<int> set;
std::copy(list.begin(), list.end(), std::inserter(set));

关于c++ - 如何实现 std::set 或 std::hash_set 来过滤数组列表中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3707278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com