获取原始指针到容器的末尾

Jon*_*Mee 1 c++ containers pointers iterator segmentation-fault

如果我有end iterator一个容器,但我想获得一个原始指针,有没有办法实现这一目标?

说我有一个容器:foo.我不能这样做:&*foo.end()因为它产生运行时错误:

矢量迭代器不是dereferencable

我可以做到这一点,但我希望有一个更清洁的方式到达那里:&*foo.begin() + foo.size().

编辑:

这不是关于如何将迭代器转换为指针的问题(显然在问题中),而是如何将结束迭代器专门转换为指针."重复"问题中的答案实际上建议取消引用迭代器.如果没有seg-faulting,则不能解除引用迭代器.

eca*_*mur 5

访问存储结束的正确方法是:

v.data() + v.size()
Run Code Online (Sandbox Code Playgroud)

这是因为空*v.begin()时无效v.

data为所有连续容器(vector,stringarray)提供成员函数.

从C++ 17开始,您还可以使用非成员函数:

data(v) + size(v)
Run Code Online (Sandbox Code Playgroud)

这也适用于原始数组.