在 C 中,很容易做如下事情:
int foo (int arr[], int size) {
// Do some stuff.
// Recur ignoring half of the input array.
return foo (arr + size / 2, size / 2);
}
我知道我们能够做到这一点,因为在 C 语言中,数组的名称基本上是指向内存中连续 block 的指针,基本的指针算法可以很好地处理它。
我的问题是如何使用 C++ vector 或数组容器实现这种便利?从根本上说,有没有其他技巧可以做到这一点?
据我所知,这根本行不通:
int foo (vector<int>& arr, int size) {
// Do some stuff.
// Recur ignoring half of the input array.
return foo (arr + size / 2, size / 2);
}
最佳答案
如果您不能更改函数签名,那么您可以传递 vector 的 data()
和 size()
属性,它们与函数兼容:
foo(v.data(), v.size());
关于c++ - 如何将 std::vector 名称视为 C 类型数组名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42000819/