我正在使用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))

09-27 08:23