【发布时间】:2013-12-28 23:55:45
【问题描述】:
给定一个向量std::vector<double> v,我们可以通过以下方式有效地找到唯一元素:
std::vector<double> uv(v.begin(), v.end());
std::sort(uv.begin(), uv.end());
std::erase(std::unique(uv.begin, uv.end()), uv.end());
创建向量的最佳方式是什么(没有循环,使用 STL 或 lambdas):
std::vector<double> freq_uv(uv.size());
其中将包含出现在v 中的每个不同元素的频率(顺序与排序的唯一值相同)?
注意:类型可以是任何东西,而不仅仅是double
【问题讨论】:
-
我需要来自原始向量
v的频率(对于存储在uv中的每个唯一值) -
@BenjaminLindley:她的意思是元素在原始范围内的频率……
-
我明白了。最好的方法是需要一个循环,或者标准库中不存在的算法函数,并且可以用循环来实现。
-
@BenjaminLindley,你能分享一下你心中的sn-p吗?
标签: c++ c++11 vector stl unique