У меня есть вектор, определенный как vector<char>
, и у меня есть некоторая функция, которая вызывается в какой-то момент, который получает диапазон - что-то вроде следующего:
template <typename Iterator>
void foo(Iterator& start, Iterator& end)
{
}
В приведенной выше функции у меня в данный момент есть вызов std::find
для поиска заданного символа - это слишком медленно (я знаю это, потому что я профилировал - :)). Что я хотел бы сделать (в какой-то момент в будущем использовать встроенные функции SSE4.2 для поиска символа), но сейчас я хочу сделать поиск вектором, то есть что-то вроде следующего (не безопасная эксплуатация).
unsigned long long* scanv = reinterpret_cast<unsigned long long*>(<access pointer at start>);
// some byte magic.
поэтому мой вопрос - единственный ли способ сделать это, также передать вектор, а затем выполнить distance
, затем &vect[index]
для доступа к базовому указателю?