我正在使用boost数组作为缓冲区,并希望将其作为参数传递给函数。我想要传递的方式是将大小确定为另一个参数,以便我可以传递大小不同的缓冲区。目前,我的代码如下:
void DataTransform(boost::array<char, 1024> data) {
//do something
}
对于普通的数组,我可以使用:
void DataTransform(char* data, uint_16 size) {
//do something
}
我将如何展开boost数组以将其表示为指针?
最佳答案
boost::array
有一个data()
method返回一个指向数组开头的指针,一个size()
method返回一个数组中元素的数量:
DataTransform(some_array.data(), some_array.size())
另一个选择是重新处理DataTransform方法以在迭代器上工作:
template<typename T, typename U>
DataTransform(T begin, U end) {
for(; begin != end; ++begin) {
// do something with *begin
}
}
然后可以这样称呼它:
DataTransform(std::begin(some_array), std::end(some_array))
DataTransform(some_c_array, some_c_array + some_c_array_size)
DataTransform(std::begin(some_list), std::end(some_list))