在 MRE https://godbolt.org/z/jdjPzdGeo中,有没有一种方法可以返回c类型数组的迭代器,就像您在in和 中Func看到的那样?我不知道返回类型是什么。std::arrayFunc2Func3
另外,有没有办法让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();
}
Run Code Online (Sandbox Code Playgroud)
返回c类型数组的迭代器?
我不知道返回类型是什么。
数组的迭代器类型是指针。例如,如果您有一个 数组int,则该数组的迭代器类型为int*。
并期望返回类型是某种迭代器。
int*是一个迭代器。
int* 适用于 std::begin 但 std::cbegin 呢?
如果你想要一个常量迭代器,那就是const int*.
Func2据我所知,你的返回悬挂着迭代器。不要将迭代器、引用等返回到具有自动存储持续时间的对象。