Mon*_*tor 0 c++ encryption hash
我在为学校科学博览会编写的程序中有一个函数,它需要做的是将数组作为参数,加密数组的值,并将加密的值存储在字符串中.我怎样才能做到这一点?
有几种方法可以做到这一点.以下是一些例子:
C-风格
void f(T *array, size_t size);
Run Code Online (Sandbox Code Playgroud)
在这种风格中,数组衰减到指向第一个参数的指针,该参数作为第一个参数传递给函数.由于这种转换失去了数组的大小,你也要传递大小,我作为函数的第二个参数.用它作为:
T array[N]; //N is some compile-time constant.
f(array, N);
Run Code Online (Sandbox Code Playgroud)C++ - 风格
template<typename T, size_t size>
void f(T (&array)[size]);
void f(std::vector<T> & array);
Run Code Online (Sandbox Code Playgroud)
在此样式中,您可以通过引用传递数组,该数组保留数组的大小,或者您可以使用std::vector<T>.用它作为:
T array[N];
f(array); //calls the first version (the template version)
std::vector<T> v;
//fill v
f(v); //calls the vector version
Run Code Online (Sandbox Code Playgroud)
由@Mike添加:或者你可以使用它,这甚至更好:
template<typename FwdIterator>
void f(FwdIterator begin, FwdIterator end)
{
for( ; begin != end ; ++begin)
{
//your code
}
}
Run Code Online (Sandbox Code Playgroud)
这是更好,更通用的,因为有了它,你可以使用标准的容器(如std::vector,std::list等),以及正常的阵列.例如,
T array[N];
std::vector<T> v;
//fill v
f(array, array+N); //okay
f(v.begin(), v.end()); //also okay.
Run Code Online (Sandbox Code Playgroud)
很酷,不是吗?
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |