你能将指针传递给std :: vector的迭代器吗?

时间:2013-12-01 10:06:47

标签: c++ qt vector c++98

我遇到了以下代码,并在我脑海中提出了一些问题

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

其中bytes is QByteArraybytes.constData()返回const char*

我查看了向量here的构造函数,我认为唯一符合此描述的构造函数是

 vector (InputIterator first, InputIterator last,
                 const allocator_type& alloc = allocator_type());

现在我的问题是:

1 - 是否可以将指针传递给向量的迭代器?为什么它是bytes.constData() + bytes.size()?例如,如果我们稍后对字节进行更改会影响buf吗?

,这会产生副本吗?

1 个答案:

答案 0 :(得分:4)

“向量的迭代器”在这里被误导:所讨论的向量构造函数是一个模板并接受任何迭代器。这就是重点 - 您可以从任何可迭代范围构造容器。

指针确实是迭代器。事实上,迭代器的整个概念基本上是对“指针”概念的概括。

向量构造函数从输入范围复制数据,因此稍后对bytes的更改不会影响向量。