![](/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.