C++ 插入多集:在该值第一次出现之前,而不是在最后一次出现之后
正如标题所述,multiset在所有相同值的范围末尾插入一个值 (例如:在多集C++ 插入多集:在该值第一次出现之前,而不是在最后一次出现之后,c++,stl,multiset,C++,Stl,Multiset,正如标题所述,multiset在所有相同值的范围末尾插入一个值 (例如:在多集1,2,2,3中插入2使其成为1,2,2,/*new*/2,3) 如何在所有相同值的范围开始处插入新值 (例如:在多集1,2,2,3中插入2应使1、/*成为新的*/2,2,3)试试这个 std::multiset<int> mset { 2,4,5,5,6,6 }; int val = 5; auto it = mset.equal_range ( val ).first; //Find the firs
1,2,2,3
中插入2使其成为1,2,2,/*new*/2,3
)
如何在所有相同值的范围开始处插入新值
(例如:在多集1,2,2,3
中插入2应使1、/*成为新的*/2,2,3
)试试这个
std::multiset<int> mset { 2,4,5,5,6,6 };
int val = 5;
auto it = mset.equal_range ( val ).first; //Find the first occurrence of your target value. Function will return an iterator
mset.insert ( it, val ); //insert the value using the iterator
std::多集mset{2,4,5,5,6,6};
int-val=5;
自动it=mset.equal_range(val)//找到目标值的第一个匹配项。函数将返回一个迭代器
mset.insert(it,val)//使用迭代器插入值
使用函数insert(迭代器提示,常量值类型和值)
而不是insert(常量值类型和值)
。根据文档,这将在提示之前插入。您可以使用std::multiset::equal_range
将迭代器设置到下限。您不能反转整个multiset吗std::multiset
并使用reverse\u iterator
进行迭代?考虑到它还有其他用途,我认为这不是一个好的解决方案@Jarod42更好的例子是使用std::pair
只比较ValueType
至于int
,这并不重要。@Jarod42