首先看关联容器分类:
多重集合是允许有重复元素的集合,多重映射是允许一个键对应多个数据的映射。
示例代码:
#include
#include
system("pause");
return 0;
}
重点:
typedef multimap<string, string>::iterator Courseiteral;此处定义了多重映射的迭代器。
STL中的equal_range算法返回一个pair类型的值range,
vector vec;
…//vec initialize
pair<vector::iterator,vector::iterator> range;
range = equal_range(vec.begin(),vec.end(),value);
其中range.first是可以在不改变原来排序顺序的情况下的可以插入value的最小迭代器位置,
range.second是不改变原来排序顺序的情况下的可以插入value的最大迭代器位置.
实际情况是:如果vec中存在value,那么range.first就是vec中的指向第一个value位置的迭代器,而range.second则是vec中指向第一个大于value的值的位置的迭代器.
如果搜索值在容器中是最后一个值那么range.second就是container.end().当vec中没有value时,range返回一个0区间,
也就是range.first=range.second=指向vec中第一个值大于value的位置的迭代器(可能为vec.end,如果vec中所有值均小于value)。