c++ - 将迭代器转换为指针?

标签 c++ stl pointers vector iterator

我有一个 std::vectorn元素。现在我需要传递一个指向具有最后 n-1 的 vector 的指针。元素到函数。

例如,我的 vector<int> foo包含 (5,2,6,87,251) .一个函数需要vector<int>*我想将一个指向 (2,6,87,251) 的指针传递给它.

我可以(安全地)使用迭代器 ++foo.begin() ,将其转换为指针并将其传递给函数?或使用 &foo[1] ?

更新:人们建议我将函数更改为采用迭代器而不是指针。在我的情况下这似乎是不可能的,因为我提到的功能是 find unordered_set<std::vector*>的功能.所以在这种情况下,复制 n-1来自 foo 的元素进入一个新 vector 并调用 find有一个指向唯一选择的指针?非常低效!这就像画家 Shlemiel,特别是因为我必须查询许多子集:最后一个 n-1 ,然后 n-2等元素并查看它们是否在 unordered_set 中.

最佳答案

在这里,获取对迭代器使用的对应指针的引用:

示例:

string my_str= "hello world";

string::iterator it(my_str.begin());

char* pointer_inside_buffer=&(*it); //<--

[notice operator * 返回一个reference,所以在引用上执行 & 会给你地址]。

关于c++ - 将迭代器转换为指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/743055/

相关文章:

c++ - 使用 protobuf 构建 CMake 项目

c++ - 为什么从 VS2010 迁移到 VS2015 时,相同的代码会慢两倍?

c++ - 声明后构建STL容器

c++ - 用一对索引 STL 映射是个好主意吗?

c - 调试利用内存并在其中释放的宏?

c++ - 使用 std::complex<double> 为 `*` 操作将 int 转换为 double

C++ : Add a method to a base class interface

c++ - 如何在 DOSBOX 中编译使用 graphics.h 的代码?

c++ - 将指针转换为指针……指向指针?

c - 使用 strcpy 和等于运算符的字符串赋值