gpt4 book ai didi

c++ - 如何使用基本类型 uint8_t* 的 std::iterator?

转载 作者:行者123 更新时间:2023-11-30 01:37:49 25 4
gpt4 key购买 nike

在比特币核心 C++ 实现中有 code使用 std::reverse_iterator<const uint8_t*> 遍历 uint8_t 数组.

请参阅下面的简化代码以及 pastebin 中的代码.

#include <stdint.h>
#include <iterator>
#include <iostream>

using namespace std;
uint8_t data[8] = {0, 1, 2, 3, 4, 5, 6, 7};

template<typename T>
void HexStr(const T itbegin, const T itend)
{
for (T it = itbegin; it < itend; ++it)
{
cout << +*it << " ";
}
cout << endl;
}

int main()
{
HexStr(reverse_iterator<const uint8_t*>(data + sizeof(data)),
reverse_iterator<const uint8_t*>(data));

return 0;
}

我的问题是为什么使用常规迭代器 ( std::iterator<const uint8_t*> ) 不能 - 编译器错误是 error: wrong number of template arguments (1, should be at least 2) .

查看此 pastebin 中的失败代码.

代码可以在这里在线复制编译:http://www.compileonline.com/compile_cpp11_online.php

最佳答案

std::reverse_iterator将原始迭代器类型作为模板参数。

因此您要查找的类型是 const uint8_t* , 不是 std::iterator<const uint8_t*> (即 another thing altogether )。

关于c++ - 如何使用基本类型 uint8_t* 的 std::iterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48984440/

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