我以这种方式使用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
中,并计为jrok或johny给出的代码;
解决方案2
我将使用std::multimap
再次存储第二个和第三个元素并计算。
答案 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; });