我有下面列出的代码,我试图从字符串 vector 中删除任何重复的足球队名称。但是,它有时仅起作用,它将删除某些团队的重复名称;但是对于其他人,最终数组中会出现多次相同的团队名称。
例如,它将打印:
aresnal
wigan
villa
liverpool
villa
请注意,有两个“别墅”名称,有人可以给我一个建议吗?
“finalLeague”是存储所有名称的数组,并且是需要删除重复项的数组。
for (int i = 0;i < finalLeague.size();i++)
{
string temp = finalLeague[i];
int h = i + 1;
for (int j = i+1;j < finalLeague.size();j++)
{
if (finalLeague[j] == finalLeague[i])
{
finalLeague.erase(finalLeague.begin()+j);
}
}
}
最佳答案
当然,您可以结合使用std::sort
, std::unique
和std::vector::erase
:
std::sort(finalLeague.begin(), finalLeague.end());
auto it = std::unique(finalLeague.begin(), finalLeague.end());
finalLeague.erase(it, finalLeague.end());
或者,使用首先不接受重复项的容器:
std::set<std::string> finalLeague; // BST, C++03 and C++11
std::unordered_set<std::string> finalLeague; // hash table, C++11