使用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::begin
和std::end
不会返回已经衰减为指针类型的数组的范围。他们所看到的只是一个指针。非正式地,他们不知道指针实际上指向数组中的第一个元素。
您可以将C ++标准库容器(如std::vector
)传递给您的函数(可能通过引用),或者将数组的长度作为参数传递:例如
void possiblepermutation(int* array , std::size_t n){
std::set<int> roots(array, array + n);
以上是关于使用STL开始和结束设置的C ++指针数组的主要内容,如果未能解决你的问题,请参考以下文章