你能把指针传给std::向量的迭代器吗
Can you pass pointers to iterators of a std::vector
我遇到了以下代码,它在我的中提出了一些问题
std::vector<unsigned char> buf(bytes.constData(), bytes.constData() + bytes.size());
其中bytes is QByteArray
和bytes.constData()
返回const char*
我在这里讨论了向量的构造函数,我认为唯一适合这个描述的构造函数是
vector (InputIterator first, InputIterator last,
const allocator_type& alloc = allocator_type());
现在我的问题是:
1-是否可以将指针传递给向量的迭代器?为什么是bytes.constData() + bytes.size()
?这会复制吗?例如,如果我们后来对字节进行了更改,它会影响buf吗?
"向量的迭代器"在这里被误导了:有问题的向量构造函数是一个模板,接受任何迭代器。这就是重点——您可以从任何可迭代的范围构建容器。
指针实际上是迭代器。事实上,迭代器的整个概念基本上是对"指针"概念的概括。
矢量构造函数从输入范围复制数据,因此以后对bytes
的更改不会影响矢量。
相关文章:
- std::向量迭代器和调整大小/保留的奇怪/有趣行为
- 如何取消引用向量迭代器
- Map中的(字符串的)向量迭代器
- C++将向量迭代器转换为索引
- 无法取消引用超出范围的向量迭代器 - 有什么问题?
- 向量迭代器不兼容的错误,用于保存另一个向量的迭代器的向量
- C++向量迭代器nth_element编译错误
- 无法查找值初始化的向量迭代器?
- STD ::向量迭代器类型和允许的操作
- 向量迭代器 < 或 !=
- 向量迭代器在新对象的 push_back() 之后不兼容
- 向量迭代器对于包装器类不可取消引用(没有超出 end() 取消引用)
- C++向量迭代器不是增量的
- 使用向量迭代器的合并矢量
- 向量迭代器不可递增
- 向量迭代器进行循环
- 向量迭代器与c++不兼容
- 向量迭代器不可解引用C++
- C++将向量迭代器与实例进行比较
- 编译错误 ::向量 ::迭代器