我有下面列出的代码,我试图从字符串 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

09-25 22:06