C++;要使用STL begin和end设置的指针数组 我学习C++并坚持一个场景,我必须转换数组来设置

C++;要使用STL begin和end设置的指针数组 我学习C++并坚持一个场景,我必须转换数组来设置,c++,arrays,stl,C++,Arrays,Stl,我有一个指针,它保存数组的地址,我想把数组中所有唯一的元素放到集合中。如何使用STL是可能的。下面是我的代码spinet,我也在寻找很好的解释 #include<set> void possiblepermutation(int *array) { set<int> roots(begin(array),end(array)); } #包括 无效可能项置换(int*数组){ 设置根(开始(数组)、结束(数组)); } 在阅读了下面的注释后,我明白了当

我有一个指针,它保存数组的地址,我想把数组中所有唯一的元素放到集合中。如何使用STL是可能的。下面是我的代码spinet,我也在寻找很好的解释

#include<set>

void possiblepermutation(int *array) {
    set<int> roots(begin(array),end(array));

} 
#包括
无效可能项置换(int*数组){
设置根(开始(数组)、结束(数组));
} 

在阅读了下面的注释后,我明白了当我传递指针时,begin()和end()将不知道start和end。若我将数组的大小和数组指针一起传递,你们能帮我做些什么吗

void possiblepermutation(int *array , int n) {
        set<int> roots(begin(array),end(array)); // HOW TO THEN 

    } 
void-possiblepermutation(int*array,int-n){
设置根(开始(数组),结束(数组));//然后如何
} 

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

您的工作是将C++标准库容器像一个代码> STD::vector < /C> >传递给您的函数,也许是引用,或者将数组的长度作为参数传递:例如:

void possiblepermutation(int* array , std::size_t n){
    std::set<int> roots(array, array + n);
void-possiblepermutation(int*数组,std::size\u t n){
std::设置根(数组,数组+n);

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

您的工作是将C++标准库容器像一个代码> STD::vector < /C> >传递给您的函数,也许是引用,或者将数组的长度作为参数传递:例如:

void possiblepermutation(int* array , std::size_t n){
    std::set<int> roots(array, array + n);
void-possiblepermutation(int*数组,std::size\u t n){
std::设置根(数组,数组+n);

>“我正在学习C++”=不需要标记C!你需要数组的ESEIZ,因为当你把数组传递给函数时,任何大小的信息都丢失了。你不清楚你的问题是什么。但是,代码>数组< /C>只是一个指针,而不是一个数组。相关的/可能的DUPE:在学习C++时,你可能会找到一个方便的。“我正在学习C++”。所以不要标记C!你需要数组的EISIE,因为当你把数组传递给函数时,任何大小的信息都丢失了。你不清楚你的问题是什么。但是,代码>数组< /C>只是一个指针,而不是一个数组。相关的/可能的DUPE:在学习C++时,你可能会发现一个方便的地方。它知道参数是指针。@juanchopanza:事实上,这就是我想说的。更新的问题@Bathsheba@Sumeet:更新的答案!对于函数来说,数组是否已衰减是无关紧要的。它只知道参数是指针。@juanchopanza:的确,这就是我想说的。更新的问题@Bathsheba@Sumeet:更新答案!