簡體   English   中英

是否可以從給定的迭代器訪問基礎指針到向量?

[英]Is it possible to access the underlying pointer from a given iterator to a vector?

我有一個向量定義為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]來訪問底層指針?

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

但請注意,將其轉換為unsigned long long *是不安全的,因為對齊要求會有所不同。

您可以使用&(*start)獲得指向矢量開始的指針。 從那以后,您可以使用指針算法。 但那對於unsigned long long*什么呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM