我有一个 std::vector
与 n
元素。现在我需要传递一个指向具有最后 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/