C++ 使用指向STL映射的指针的操作

C++ 使用指向STL映射的指针的操作,c++,pointers,map,C++,Pointers,Map,我需要知道两个指向STL映射的指针之间的区别 使用向量很简单 vector<pair<int, int> > v; v.push_back(make_pair(0, 1)); v.push_back(make_pair(2, 3)); v.push_back(make_pair(4, 5)); v.push_back(make_pair(6, 7)); v.push_back(make_pair(8, 9)); vector<pair<int, int>

我需要知道两个指向STL映射的指针之间的区别

使用向量很简单

vector<pair<int, int> > v;
v.push_back(make_pair(0, 1));
v.push_back(make_pair(2, 3));
v.push_back(make_pair(4, 5));
v.push_back(make_pair(6, 7));
v.push_back(make_pair(8, 9));

vector<pair<int, int> >::iterator itrBegin = v.begin();
vector<pair<int, int> >::iterator itrEnd = v.end();

cout << itrEnd - itrBegin << endl;
您可以使用:

std::cout关联容器(List、set、multiset、map、multimap)迭代器是双向迭代器,而序列容器(vector、deque)的迭代器是随机访问迭代器

双向迭代器,仅定义以下运算符

Expression    Effect
--iter        Steps backward (returns new position)
iter--        Steps backward (returns old position)
这意味着您可以在双向迭代器上调用
m.end()-m.begin()

随机访问迭代器定义了以下运算符

Expression      Effect
iter[n]         Provides access to the element that has index n
iter+=n         Steps n elements forward (or backward, if n is negative)
iter-=n         Steps n elements backward (or forward, if n is negative)
iter+n          Returns the iterator of the nth next element
n+iter          Returns the iterator of the nth next element
iter-n          Returns the iterator of the nth previous element
iter1-iter2     Returns the distance between iter1 and iter2
iter1<iter2     Returns whether iter1 is before iter2
iter1>iter2     Returns whether iter1 is after iter2
iter1<=iter2    Returns whether iter1 is not after iter2
iter1>=iter2    Returns whether iter1 is not before iter2
表达效果
iter[n]提供对索引为n的元素的访问
iter+=n向前(或向后,如果n为负)
iter-=n步n个元素向后(或向前,如果n为负)
iter+n返回下一个元素的第n个迭代器
n+iter返回第n个下一个元素的迭代器
iter-n返回前n个元素的迭代器
iter1-iter2返回iter1和iter2之间的距离
iter1iter2返回iter1是否在iter2之后
iter1=iter2返回iter1是否在iter2之前

所以使用,只要迭代器是

,它就可以工作,这本来就没有意义。这对于向量是有意义的,因为元素是有序的。地图元素没有任何定义的顺序。明白了,我认为这是不可能的。我有一个使用向量的算法来执行这个操作。将结构修改为STL映射,我认为这不会影响。@Adam映射元素肯定是按特定顺序排列的…映射中的第一个元素是键,它是根据该键排序的。有趣的是,我喜欢你的答案,我会测试
Expression    Effect
--iter        Steps backward (returns new position)
iter--        Steps backward (returns old position)
Expression      Effect
iter[n]         Provides access to the element that has index n
iter+=n         Steps n elements forward (or backward, if n is negative)
iter-=n         Steps n elements backward (or forward, if n is negative)
iter+n          Returns the iterator of the nth next element
n+iter          Returns the iterator of the nth next element
iter-n          Returns the iterator of the nth previous element
iter1-iter2     Returns the distance between iter1 and iter2
iter1<iter2     Returns whether iter1 is before iter2
iter1>iter2     Returns whether iter1 is after iter2
iter1<=iter2    Returns whether iter1 is not after iter2
iter1>=iter2    Returns whether iter1 is not before iter2