gpt4 book ai didi

c++ - 不同大小数组的迭代器

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:11 25 4
gpt4 key购买 nike

以下代码在我的系统上编译良好:

#include <array>
#include <type_traits>

static_assert(std::is_same<std::array<int, 5>::iterator,
std::array<int, 7>::iterator>::value, ":(");

标准是否保证了这种行为?迭代器类型是否独立于数组大小?

如果能保证,有没有办法抽象出元素类型,忽略大小?

template<typename T, size_t n>
void foobar(std::array<T, n>::iterator it)

也就是说,有没有办法在不提及大小n的情况下编写上述特定于数组的代码?

请注意,我不想求助于 T*,即使在 Release模式下迭代器可能是 T*

最佳答案

不,没有任何保证。标准只是说

typedef implementation-defined    iterator;

迭代器类型可以是普通指针、作为数组成员的类,或者包装普通指针的单独类。

如果它是一个成员类,它取决于数组大小。否则可能不会。

关于c++ - 不同大小数组的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12823959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com