将向量传递给函数
Passing a vector to a function
我有以下代码。当我使用数组时,它工作得很好,我只是想用向量重构它,这样我就可以减少哈希的占用。
uint8_t* rip(uint8_t *in, vector<uint8_t*> *out)
{
RIPEMD160(in, 32, out);
return out;
}
int main()
{
char pub_key[] = "0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6";
vector<uint8_t> res_rip(20);
uint8_t res_sha[32];
uint8_t res_tmp[65];
hex_decode(pub_key,131,res_tmp);
for(int i =0; i < 65; i++)
cout << setw(2) << setfill('0') << hex << (int)res_tmp[i];
cout << endl << endl;
sha(res_tmp,res_sha);
rip(res_sha,&res_rip);
for(int i =0; i < 32; i++)
cout << setw(2) << setfill('0') << hex << (int)res_sha[i];
cout << endl << endl;
for(int i =0; i < 20; i++)
cout << setw(2) << setfill('0') << hex << (int)res_rip[i];
return 0;
}
我不确定我需要如何将向量传递给函数,或者我需要做什么才能正确返回它。
我得到编译器消息error: cannot convert 'std::vector<unsigned char*>*' to 'unsigned char*' for argument '3' to 'unsigned char* RIPEMD160(const unsigned char*, size_t, unsigned char*)'
该函数需要指向数据的指针,而不是std::vector
。
在c++ 11中,你可以通过调用std::vector::data()
来获得指向vector中的数据的指针。
RIPEMD160(in, 32, out->data() );
在c++ 03或更高版本中,可以通过获取vector中第一个元素的地址来获得指向vector中数据的指针。
RIPEMD160(in, 32, &out->at(0) );
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用向量的template_back函数
- 如何通过派生类函数更改基类中的向量
- 变量没有改变?通过向量的函数调用
- 一对向量构造函数:初始值设定项列表与显式构造
- 在c++中使用向量时,如何调用构造函数和析构函数
- std::sort()函数无法对向量的一部分进行排序
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- C++中函数的向量返回类型引发错误
- 添加存储在向量中的大整数的函数出现问题
- 如何在 c++ 中定义接受不同参数类型的函数向量?
- 具有 lambda 函数的函数向量
- 你能用参数制作函数向量吗?
- 在C++中使用成员函数向量时,有没有办法实现协变返回类型
- 在编写 lambda 函数向量时出现隔离错误
- 如何在 boost.process 间共享内存中使用复杂结构"push_back"函数向量
- 是否将std矢量重新分配到默认的构造函数向量是擦除的好方法
- 运行提升for_each中的成员函数向量
- 创建和回推函数向量
- C++,指向函数向量的指针的STL映射