C 指针数组使用STL开始和结束

C++ Pointer array to set using STL begin and end

本文关键字:开始 结束 STL 指针 数组      更新时间:2023-10-16

我正在学习C ,并遵守一种情况,我必须将数组转换为set

我的指针包含数组的地址,我想将数组的所有唯一元素放入集合中。使用STL如何可能。以下是我的代码旋转,也正在寻找良好的解释。

#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 
    } 

std::beginstd::end不要返回腐烂到指针类型的数组的范围。他们看到的只是指针。非正式地,他们不知道指针实际上指向数组中的第一个元素。

您的工作是通过C 标准库容器喜欢std::vector,也许是通过参考,或者将数组的长度传递为参数:例如

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