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