У меня есть std::vector
с n
элементами. Теперь мне нужно передать указатель на вектор с последними n-1
элементами в функцию.
Например, мой vector<int> foo
содержит (5,2,6,87,251)
. Функция принимает vector<int>*
, и я хочу передать ей указатель на (2,6,87,251)
.
Могу ли я просто (безопасно) взять итератор ++foo.begin()
, преобразовать его в указатель и передать его функции? Или используйте &foo[1]
?
ОБНОВЛЕНИЕ: Люди предлагают мне изменить мою функцию, чтобы взять итератор, а не указатель. Это кажется невозможным в моей ситуации, так как я упомянул функцию find
из unordered_set<std::vector*>
. Таким образом, в этом случае копирует n-1
элементы из foo
в новый вектор и вызывает find
с указателем на этот единственный вариант? Очень неэффективно! Это похоже на художника Шлемеля, тем более что мне нужно запросить множество подмножеств: последние элементы n-1
, затем n-2
и т. Д. И посмотреть, есть ли они в unordered_set
.