簡體   English   中英

您可以將指針傳遞給std :: vector的迭代器嗎

[英]Can you pass pointers to iterators of a std::vector

我遇到了以下代碼,這在我腦海中引發了一些問題

std::vector<unsigned char> buf(bytes.constData(), bytes.constData() + bytes.size());

其中bytes is QByteArraybytes.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.

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