gpt4 book ai didi

c++ - 检查 vector 中的重复项并计算它们 C++

转载 作者:行者123 更新时间:2023-11-30 02:26:04 24 4
gpt4 key购买 nike

我的目标是检查 vector 中的重复项并将它们与重复计数一起发布。示例:

vector<string> vec{"words", "words", "are", "fun", "fun", "fun"};
// words - 2
// fun - 3

我找到了很好的解决方案,但我不知道是否有任何可能的方法来打印计数器:

vector<string> vec{"words", "words", "are", "fun", "fun", "fun"};
sort(vec.begin(), vec.end());
set<string> uvec(vec.begin(), vec.end());
list<string> output;

set_difference(vec.begin(), vec.end(),
uvec.begin(), uvec.end(),
back_inserter(output));

for (list<string>::iterator i = output.begin(); i != output.end(); ++i)
cout << *i << endl;

最佳答案

您可以简单地保留一个计算单词数量的 map

vector<string> vec{"words", "words", "are", "fun", "fun", "fun"};
map<string, int> words;
for(const auto& x : vec) ++(words[x]);

for(const auto& [k, v] : words)
if(v > 1) cout << k << " - " << v << "\n";

live wandbox example


请注意,我正在使用称为“结构化绑定(bind)” 的 C++17 功能将 words 的对解构为 [k, v]。如果您没有 C++17 编译器,则可以使用 const auto& p : words 并使用 p.firstp 访问对成员。第二个

关于c++ - 检查 vector 中的重复项并计算它们 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43323301/

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