Просто используйте функцию upper_bound
члена multiset
.upper_bound
вернет первый элемент, который больше значения, которое вы ищете.Это означает, что итератор до этого будет первым элементом, который равен или меньше значения.Таким образом, в
int main()
{
std::multiset<int> ms = {1,1,2,2,3,3,4,4,5,5};
auto end = ms.upper_bound(3);
for (auto it = ms.begin(); it != end; ++it)
std::cout << *it;
}
будет напечатано 112233
, поскольку все элементы меньше или равны 3
.
Конечно, вам нужно убедиться, что upper_bound
не возвращает begin()
, что означает, что нет элементов, меньших или равных тому, что вы ищете.