作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的目标是检查 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";
请注意,我正在使用称为“结构化绑定(bind)” 的 C++17 功能将 words
的对解构为 [k, v]
。如果您没有 C++17 编译器,则可以使用 const auto& p : words
并使用 p.first
和 p 访问对成员。第二个
。
关于c++ - 检查 vector 中的重复项并计算它们 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43323301/
我是一名优秀的程序员,十分优秀!