Как я могу напрямую найти количество элементов между любыми двумя итераторами, указывающими на два разных ключа на карте без for loop?

Как я могу напрямую найти количество элементов между любыми двумя итераторами, указывающими на два разных ключа в карте, без цикла for?

     #include <string>
     #include <iostream>
     #include <map>
     #include <utility>
     #include <iterator>
     #include <stdio.h>
     using namespace std;
     int main()
   {

     std::map<string, string> m;
     m.insert(pair< string, string>("4-2"," 61-7" ));
     m.insert(pair< string, string>("5-2"," 61-7" ));
     m.insert(pair< string, string>("5-3"," 61-7" ));
     m.insert(pair< string, string>("5-4"," 61-7" ));
     m.insert(pair< string, string>("5-5"," 61-7" ));
     m.insert(pair< string, string>("5-6"," 61-7" ));

     map<string, string>::iterator it4;
     map<string, string>::iterator it5;
     it4=m.find("5-2");
     it5=m.find("5-5");
     cout << " value of it4" << it4->first << it4->second <<  endl;
     cout << " value of it5" << it5->first << it5->second <<  endl;
     m.clear();
     getchar();

  }

Мой желаемый результат - разница элементов между it5 и it4, которые здесь 2, так как элементы с ключами "5-3" и "5-4" лежат между ними. Я не хочу повторять цикл for, так как в моем случае количество элементов на карте достаточно велико. И я должен регулярно узнавать разницу. использование цикла for займет много времени, если два итератора находятся далеко.

0
задан Invictus 11 January 2012 в 18:53
поделиться