你能把指针传给std::向量的迭代器吗

Can you pass pointers to iterators of a std::vector

本文关键字:向量 迭代器 std 指针      更新时间:2023-10-16

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

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吗?

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

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

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