返回c类型数组的迭代器?



在MRE https://godbolt.org/z/jdjPzdGeo中,是否有一种方法可以返回Funcc类型数组的迭代器,就像您在Func2Func3中看到的std::array一样?IDK返回类型是什么

还有,有没有办法使Funcconstexpr像Func2一样?

编辑:在这里添加代码

#include <array>
std::pair<int*, std::size_t>
Func() noexcept
{
// why does constexpr instead of static not work?
static int arr[]  = {1, 2};
return { arr, std::size(arr) };
}
constexpr std::pair<std::array<int,2>::const_iterator, std::array<int,2>::const_iterator>
Func2() noexcept
{
constexpr std::array<int, 2> arr  {{1, 2}};
return { std::cbegin(arr), std::cend(arr) };
}
std::pair<std::array<int,2>::const_iterator, std::array<int,2>::const_iterator>
Func3() noexcept
{
static std::array<int, 2> arr  {{1, 2}};
return { std::cbegin(arr), std::cend(arr) };
}
int main()
{
Func();
Func2();
Func3();
}

返回c类型数组的迭代器?

IDK返回类型是什么

数组的迭代器类型是指针。例如,如果数组为int,则该数组的迭代器类型为int*

,我期望返回类型是某种类型的迭代器。

int*是一个迭代器

int*适用于std::begin,但std::cbegin呢?

如果你想要一个常量迭代器,那就是const int*


据我所知,你的Func2返回悬空迭代器。不要将迭代器、引用等返回给具有自动存储持续时间的对象。

相关内容

  • 没有找到相关文章