c++ - 删除字符串 vector 中的重复字符串

标签 c++ vector

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

关于c++ - 删除字符串 vector 中的重复字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20634743/

相关文章:

c++ - 使用命令行参数创建结构 vector

c++ - Qt - 跟踪 QAbstractAnimation 运动

C++异常设计

c++ - 在运行时从内存中加载动画光标

c++ - 共线点 C++

android - 优化 Android/iOS 设备上的巨大 VBO 绘图

c++ - 更快的四元数 vector 乘法不起作用

c++ - 如何通过复制和引用将 vector 传递给函数?

c++ - Release模式下迭代器的绑定(bind)检查 (c++)

c++ - 定义一个 "vector_cast"模板函数,它可以处理可变数量的嵌套 vector