c++反向整数序列实现
c++ reversed integer sequence implementation
谁知道如何实现C++std::make_index_sequence
反向版本。获取-make_index_sequence_reverse<int, 5> = <4,3,2,1,0>
。非常感谢。
IMHO,index_sequence_reverse
:std::index_sequence
没有理由支持索引序列,并且是顺序中立的(甚至没有顺序(。
如果你可以使用std::make_index_sequence
,对于makeIndexSequenceReverse
,你可以制作如下
#include <utility>
#include <type_traits>
template <std::size_t ... Is>
constexpr auto indexSequenceReverse (std::index_sequence<Is...> const &)
-> decltype( std::index_sequence<sizeof...(Is)-1U-Is...>{} );
template <std::size_t N>
using makeIndexSequenceReverse
= decltype(indexSequenceReverse(std::make_index_sequence<N>{}));
int main ()
{
static_assert( std::is_same<std::index_sequence<4U, 3U, 2U, 1U, 0U>,
makeIndexSequenceReverse<5U>>::value, "!" );
}
这里有一种使用继承的方法:
template <std::size_t, typename>
struct make_reverse_index_sequence_helper;
template <std::size_t N, std::size_t...NN>
struct make_reverse_index_sequence_helper<N, std::index_sequence<NN...>>
: std::index_sequence<(N - NN)...> {};
template <size_t N>
struct make_reverse_index_sequence
: make_reverse_index_sequence_helper<N - 1,
decltype(std::make_index_sequence<N>{})> {};
helper结构用于推导参数并应用减法。它可以像std::make_index_sequence
一样使用,因为它源自std::index_sequence
,如您所见:
std::index_sequence<4, 3, 2, 1, 0> x = make_reverse_index_sequence<5>{};
相关文章:
- 如何实现容纳整数和无效指针的双向链表?
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 独立于实现的浮点/整数转换
- c++反向整数序列实现
- 为什么这个新的 [ ] 和删除 [ ] 实现会分解为 12 >整数?
- 整数到字符实现
- 如何使用 c++ 模板实现整数、字符串、浮点数和日期对象的数组
- 整数序列实现C++
- 如何将自己的链表实现从存储整数更改为存储个人数据
- 实现整数除法向上舍入的正确方法是什么?
- 有符号整数和无符号整数C++的实现差异
- 如何从uint8_t的缓冲区读取带符号整数,而不调用未定义或实现定义的行为
- 使用递归实现 pow(A, B) % C,其中 A、B 和 C 是正整数
- 在C++中实现 CTR 加密模式时,CTR 加上 64 位整数
- 快速实现大整数计数器(在C/C 中)
- 在C++11中实现共享整数计数器而不使用互斥的最简单方法:
- 如何使用 C++11 实现指向整数的指针的原子增量<atomic>?
- C - 仅使用未签名整数实现QuickSort
- 高效实现 64 位和 32 位无符号整数之间的双向映射
- C++ 如何实现双倍权重(而不是整数)的克鲁斯卡尔定理