使用STL开始和结束设置的C ++指针数组

时间:2017-12-29 10:33:38

标签: c++ arrays stl

我正在学习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 

    } 

1 个答案:

答案 0 :(得分:2)

std::beginstd::end不会返回已衰减为指针类型的数组的范围。他们所看到的只是一个指针。非正式地,他们不知道指针实际指向数组中的第一个元素。

您的工作是将C ++标准库容器(例如std::vector)传递给您的函数(可能是通过引用),或者将数组的长度作为参数传递:例如

void possiblepermutation(int* array , std::size_t n){
    std::set<int> roots(array, array + n);