📜  C++ STL中的vector data()函数(1)

📅  最后修改于: 2023-12-03 15:13:56.926000             🧑  作者: Mango

C++ STL中的vector data()函数

在C++的STL库中,vector是一种动态数组,提供了方便的操作接口。其中,data()函数用于返回指向vector中第一个元素的指针,并可用于直接访问和修改vector的底层数组。

函数签名
T* data() noexcept;

其中,T代表vector的元素类型。

功能

data()函数返回一个指向vector底层数组的指针,可以用于直接访问和修改底层数组的值,比如通过指针进行迭代、逆序、排序等操作。

需要注意的是,由于data()函数返回的指针指向vector底层数组的首元素,因此在修改数组内容时需谨慎,避免越界或无效的指针操作。

同时,需要注意的是,如果vector为空,即没有元素,那么调用data()函数将返回一个指向空地址的指针,因此在访问之前应先判断vector是否为空。

示例
#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    int* ptr = numbers.data();
    int size = numbers.size();

    // 输出数组的内容
    for (int i = 0; i < size; i++) {
        std::cout << ptr[i] << " ";
    }
    std::cout << std::endl;

    // 通过指针修改数组的值
    for (int i = 0; i < size; i++) {
        ptr[i] *= 2;
    }

    // 输出修改后的数组内容
    for (int i = 0; i < size; i++) {
        std::cout << ptr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

以上示例中,我们首先创建一个包含5个整数的vector,然后通过data()函数获取指向数组的指针。接着,我们通过指针迭代并输出数组的内容。然后,我们通过指针修改数组的值,再次输出修改后的数组内容。

注意事项
  • 使用data()函数要确保vector不为空,否则返回的指针将为一个空指针。
  • 在修改数组内容时,要确保不越界或进行无效的指针操作。
  • 若vector的长度可能变化,修改底层数组时需小心,防止指针失效。

以上是关于C++ STL中vector的data()函数的介绍,希望对程序员有所帮助。