C++ 在std::map中插入时的位置

C++ 在std::map中插入时的位置,c++,dictionary,insert,std,stdmap,C++,Dictionary,Insert,Std,Stdmap,我有一个在std::map中插入一对的方法。 该映射类似于(0,value0),(3,value3),(8,value8)。。。 因此,当我插入时,我需要指定整数值。 我的问题是,如果我有: (0,value0),(3,value3)并且我想插入(5,value5),其中value3与value5相同。不能插入对(5,value5)。 如何检查元素应该到达的位置的前一个位置是否具有相同的值? 到目前为止,我已经尝试插入该对,获取迭代器,检查前面的值,并在需要时删除插入的值。但我觉得这个解决方案有

我有一个在std::map中插入一对的方法。 该映射类似于(0,value0),(3,value3),(8,value8)。。。 因此,当我插入时,我需要指定整数值。 我的问题是,如果我有: (0,value0),(3,value3)并且我想插入(5,value5),其中value3与value5相同。不能插入对(5,value5)。 如何检查元素应该到达的位置的前一个位置是否具有相同的值? 到目前为止,我已经尝试插入该对,获取迭代器,检查前面的值,并在需要时删除插入的值。但我觉得这个解决方案有点难看。 有什么想法吗?
提前感谢

Map的
下限
函数将向第一个元素返回一个迭代器,该元素的位置大于或等于您给它的位置;然后你可以回去一个。(小心,以防你已经开始了。)


当您考虑<代码> { 3,Value3} /代码>,<代码> {值} } /代码>,和<代码> { 5,Value3} <代码>,<代码> { 5,Value5} < /代码>等效,然后<代码> { 3,Value3} <代码>,<代码> { 5,Value5} <代码>也应该是等价的…@ RuloVic:如果您想保持这个结构,也许您可以存储这些值。(value0,value2,…)在另一个向量中,并检查在地图中插入对之前是否插入了该对?谢谢Alan,这正是我想要的。顺便说一句:您可以将返回的迭代器作为提示传递给后续的
插入
,如果您选择这样做,则得到O(1)而不是O(logn)插入-您已经支付了查找成本。