[英]C++ Find the number of elements in a range from an STL::multimap
我有一個STL :: multimap,我用equal_range搜索它以返回一個上限和下限。 我可以找到這個范圍內的元素數量而不是迭代它們並逐個計算它們嗎?
#include <iostream>
#include <map>
using namespace std;
int main () {
multimap<int,int> mm;
pair<multimap<int, int>::iterator,multimap<int, int>::iterator> ret;
multimap<int,int>::iterator retit;
for (int n=0; n<100; n++) {
mm.insert ( make_pair( rand()%10,rand()%1000) );
}
ret = mm.equal_range(5);
int ct = 0;
for (retit=ret.first; retit!=ret.second; ++retit) {
cout << retit->second << endl;
ct++;
}
cout << ct << endl;
return 0;
}
使用std::distance
算法查找迭代器之間的距離。 喜歡:
int ct1 = std::distance(ret.first, ret.second);
如果您只想計算給定鍵的元素數,請使用count
:
int ct = mm.count(5);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.