![](/img/trans.png)
[英]Why are STL algorithms much faster with pointers than std::vector iterators?
[英]Can you pass pointers to iterators of a std::vector
我遇到了以下代碼,這在我腦海中引發了一些問題
std::vector<unsigned char> buf(bytes.constData(), bytes.constData() + bytes.size());
其中bytes is QByteArray
, bytes.constData()
返回const char*
我在這里介紹了vector的構造函數,我認為適合此描述的唯一構造函數是
vector (InputIterator first, InputIterator last,
const allocator_type& alloc = allocator_type());
現在我的問題是:
1-是否可以將指針傳遞給向量的迭代器? 為什么是bytes.constData() + bytes.size()
? 例如,如果我們以后對字節進行更改,是否會影響buf?
這里誤導了“向量的迭代器”:所討論的向量構造器是模板,並且可以接受任何迭代器。 這就是重點-您可以在任何可迭代的范圍內構造容器。
和指針確實迭代器。 實際上,迭代器的整個概念基本上是“指針”概念的概括。
向量構造函數從輸入范圍復制數據,因此以后對bytes
更改不會影響向量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.