0

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

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

在哪里 bytes is QByteArraybytes.constData()返回const char*

我在这里查看了向量的构造函数,我认为适合此描述的唯一构造函数是

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

现在我的问题是:

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

4

1 回答 1

4

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

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

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

于 2013-12-01T10:09:55.633 回答