stl map,小弟我已知某个元素的iterator :itr,小弟我如何知道这个map遍历出来后这个元素是第几个输出出来的

stl map,我已知某个元素的iterator :itr,我怎么知道这个map遍历出来后这个元素是第几个输出出来的?
map遍历类似这样:
map<***> m1;
for(itr = m1.begin();itr != end();itr++)
{
cout <<**;
}
我这样行不行?:int nIndex = itr - m1.begin();


------解决方案--------------------
map如果支持迭代器相减就可以,但是得这样nIndex = itr - m1.begin()+1;
------解决方案--------------------
int nIndex = std::distance(itr, m1.begin());
------解决方案--------------------
设一个计数器:整形的;每次加1;你可以知道了;
------解决方案--------------------
探讨
int nIndex = std::distance(itr, m1.begin());