3元素多图,按第一个排序,但计算第二个数字

时间:2014-03-18 07:47:03

标签: c++ sorting multimap

我以这种方式使用std::multimap

std::multimap<float, std::pair<int, int> > edges;

我想按第一个浮点数对其进行排序,但后来计算了多个 int <int, int>的第一个)在此多重映射中的数量。

例如,

我的(0.6001, <2,3>), (0.62, <2,4>), (0.63, <1,3>)中有元素对multimap, 我想计算<2,*>的数量(这里应该是2)。

是否有一种更简单的方式(类似于edges.count()),而不是让每个元素都出来并计算?

或者我可以转向另一个容器吗?

解决方案1 我将首先将我需要计算的值存储在std::set中,并计为jrokjohny给出的代码;

解决方案2 我将使用std::multimap再次存储第二个和第三个元素并计算。

感谢jrokjohny

1 个答案:

答案 0 :(得分:1)

这个怎么样?

std::multimap<float, std::pair<int, int> > edges;
typedef std::multimap<float, std::pair<int, int> >::value_type ElemT;

int value = 2;
int count = 
std::count_if(edges.begin(), edges.end(),
    [value](const ElemT& e) { return e.second.first == value; });