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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用STL开始和结束设置的C ++指针数组相关的知识,希望对你有一定的参考价值。

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

    } 
答案

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

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

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

以上是关于使用STL开始和结束设置的C ++指针数组的主要内容,如果未能解决你的问题,请参考以下文章

C语言全排列问题为啥用指针比数组慢很多?

指针,数组指针,指针数组,函数指针解析

指针,数组指针,指针数组,函数指针解析

C风格字符串

C语言进阶4——指针的进阶

C语言程序代码的125个建议