📅  最后修改于: 2023-12-03 14:51:22.282000             🧑  作者: Mango
您好,本文将为您介绍如何使用STL函数在std::vector中查找并打印重复的单词。以下是具体实现的代码片段:
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
int main()
{
std::vector<std::string> words = {"hello", "world", "hello", "how", "are", "you", "are"};
// 使用set去重
std::set<std::string> wordSet(words.begin(), words.end());
// 如果去重后的set大小和原本的vector大小不一致,则说明存在重复单词
if (wordSet.size() != words.size())
{
// 找到重复单词并输出
std::vector<std::string> duplicateWords;
std::set<std::string> wordSet2;
for (auto& word : words)
{
// set.insert()返回值为pair<iterator, bool>
// 如果插入的元素已存在,则返回的bool为false,此时将其加入重复单词的vector中
if (!wordSet2.insert(word).second)
{
duplicateWords.push_back(word);
}
}
// 输出重复单词
std::cout << "Duplicate words: ";
for (auto& word : duplicateWords)
{
std::cout << word << " ";
}
std::cout << std::endl;
}
else
{
std::cout << "No duplicate words found." << std::endl;
}
return 0;
}
实现的思路是先使用std::set将vector中的单词去重,然后比较去重后的set大小和原本的vector大小是否一致,如果不一致,则说明存在重复单词。接下来就是找到重复单词并输出了。
使用STL函数std::set能够很方便地去重,std::vector的成员函数find()也可以找到某个元素的位置,但是找到所有重复元素并不是很方便,因此本文选择使用std::set来去重。
最终输出的结果是重复单词的vector,可以根据实际情况调整输出方式。