我遇到了以下代码,并在我脑海中提出了一些问题
std::vector<unsigned char> buf(bytes.constData(), bytes.constData() + bytes.size());
其中bytes is QByteArray
和bytes.constData()
返回const char*
我查看了向量here的构造函数,我认为唯一符合此描述的构造函数是
vector (InputIterator first, InputIterator last,
const allocator_type& alloc = allocator_type());
现在我的问题是:
1 - 是否可以将指针传递给向量的迭代器?为什么它是bytes.constData() + bytes.size()
?例如,如果我们稍后对字节进行更改会影响buf吗?
答案 0 :(得分:4)
“向量的迭代器”在这里被误导:所讨论的向量构造函数是一个模板并接受任何迭代器。这就是重点 - 您可以从任何可迭代范围构造容器。
指针确实是迭代器。事实上,迭代器的整个概念基本上是对“指针”概念的概括。
向量构造函数从输入范围复制数据,因此稍后对bytes
的更改不会影响向量。