我正在学习C ++并且遇到了一个必须将数组转换为set
的场景我有指针,它保存数组的地址,我希望将数组的所有唯一元素放入集合中。使用STL怎么可能。下面是我的代码spinet,我也在寻找好的解释。
#include<set>
void possiblepermutation(int *array) {
set<int> roots(begin(array),end(array));
}
在阅读下面的评论之后,我理解当我传递指针时所以begin()和end()将不知道开始和结束。如果我将数组大小与数组指针一起传递,该怎么做,你能帮我解决一下吗?
void possiblepermutation(int *array , int n) {
set<int> roots(begin(array),end(array)); // HOW TO THEN
}
答案 0 :(得分:2)
std::begin
和std::end
不会返回已衰减为指针类型的数组的范围。他们所看到的只是一个指针。非正式地,他们不知道指针实际指向数组中的第一个元素。
您的工作是将C ++标准库容器(例如std::vector
)传递给您的函数(可能是通过引用),或者将数组的长度作为参数传递:例如
void possiblepermutation(int* array , std::size_t n){
std::set<int> roots(array, array + n);