Но как известно они возвращают указатели.
Как известно, они возвращают итераторы.
Есть задачи найти индекс первого и последнего вхождения числа x в последовательность.
Я решил использовать lower_bound(x) и upper_bound(x)
Однако, lower_bound и upper_bound возвращают итераторы на первое значение, которое
больше или равно ( или соответственно, меньше или равно ) заданному. Для того, чтобы найти конкретно заданное значение нужно использовать, как это ни удивительно find.
Кроме того, вы же понимаете, что multiset пересортировывает входящую последовательность и она уже будет не такой, как вводит пользователь?
Если вам нужен индекс, то нужно из итератора, полученного из функции поиска вычесть итератор на начало последовательности. Кроме того не забудьте обработать случай, когда числа в последовательности вовсе нет. Первое вхождение ищется очевидным образом, как найти последнее, пожалуй оставим на самостоятельное изучение.