我有一个包含n
个元素的std::vector
。现在我需要传递指向最后n-1
个元素的向量的指针给函数。
例如,我的vector<int> foo
包含(5,2,6,87,251)
。一个函数需要vector<int>*
,我想给它传一个指向(2,6,87,251)
的指针。
我可以安全地使用迭代器++foo.begin()
,将其转换为指针并将其传递给函数吗?或者使用&foo[1]
?
更新: 人们建议我将我的函数更改为接受一个迭代器而不是指针。在我的情况下,这似乎不可能,因为我提到的函数是unordered_set<std::vector*>
的find
函数。那么,在这种情况下,是将n-1
个元素从foo
复制到新向量中,并使用该向量的指针调用find
是唯一的选择吗?非常低效!就像Shlemiel画家一样,特别是因为我必须查询许多子集:最后n-1
,然后是n-2
等元素,并查看它们是否在unordered_set
中。