gpt4 book ai didi

c++ - 是否可以访问从给定迭代器到 vector 的底层指针?

转载 作者:太空狗 更新时间:2023-10-29 20:31:11 24 4
gpt4 key购买 nike

我有一个 vector 定义为 vector<char> ,并且我有一些函数在接收范围的某个点被调用 - 如下所示:

template <typename Iterator>
void foo(Iterator& start, Iterator& end)
{
}

在上面的函数中,我目前调用了std::find寻找给定的角色 - 这太慢了(我知道这一点是因为我已经分析过 - :))。我想做的(在将来的某个时候是使用 SSE4.2 内在函数来搜索字符),但现在,我想做的是 vector 搜索,即类似下面的东西(不是安全操作)。

unsigned long long* scanv = reinterpret_cast<unsigned long long*>(<access pointer at start>);
// some byte magic.

所以我的问题是 - 唯一的方法是也传递 vector 然后执行 distance , 然后 &vect[index]访问底层指针?

最佳答案

如果你知道你有一个 std::vector<T>::iterator , 那么做 &*it 是安全的.

但是请注意,将其转换为 unsigned long long * 是不安全的,因为对齐要求会有所不同。

关于c++ - 是否可以访问从给定迭代器到 vector 的底层指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com