繁体   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