arasındaki bir aralıktaki öğelerin sayısını bulun Bir STL :: multimap'ım var ve bir üst ve alt sınırı döndürmek için bunu equal_range ile arıyorum. Bu aralıktaki elemanların sayısını, hepsinde yinelemeden ve teker teker saymadan bulabilir miyim?C++ Bir STL :: multimap
#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;
}
Teşekkür hızlı cevap için! Bu bana herhangi bir hız kazandıracak mı yoksa yukarıda gösterdiğim gibi mi? Bu sayfanın alt kısmında yer alıyorum: http://www.cplusplus.com/reference/std/iterator/distance/ daha hızlı olabilir O (1) fakat bunun bir rastgele olup olmadığından emin değilim yineleyiciye eriş ya da değil. – Travis
Hayır, sizi herhangi bir zaman kurtarmayacaktır. Rasgele erişim yineleyicileri (vektör yineleyici gibi) için sabit bir zamandır. Ancak, haritanın bidirectinal yineleyici olması nedeniyle, doğrusal zaman karmaşıklığı olacaktır. – Naveen
Okuna zaman ayırdığınız için teşekkürler. – Travis