Avatar ·

如何在C++中将std::vector转换为普通数组(C-style array)?

大家好!我正在编写一个C++程序,遇到了一个问题。我有一个std::vector,里面填充了数据,但我使用的某个库要求输入一个普通的C数组(int*)。如何从vector中获取指向其内部数据的原始指针,以便将其传递给函数?

以下是我的代码示例:

#include <iostream>
#include <vector>

void process_array(int* arr, size_t size) {
    for (size_t i = 0; i < size; ++i) {
        std::cout << arr[i] << " ";
    }
}

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    
    // 如何从vec获取int*?
    // process_array(vec, vec.size()); // 错误!
    
    return 0;
}

我听说有data()方法和&vec[0]操作符。它们有什么区别?哪种方式更安全?使用后是否需要处理内存?提前感谢您的帮助!

P.S. 我知道这...