如何实现C++ struct数组的动态扩容

1949idc 2年前 (2024-09-19) 阅读数 323 #编程语言

在 C++ 中,可以使用 std::vector 来实现结构体数组的动态扩容。std::vector 是一个可自动调整大小的模板类,它包含了一个动态数组,并提供了一些方法来操作这个数组。

首先,需要包 头文件。然后,创建一个std::vector ,其元素类型为你的结构体类型。当需要添加新元素时,可以使用 push_back() 方法将新元素添加到向量的末尾。std::vector` 会在需要时自动扩展其内部数组以适应新元素。

下面是一个简单的例子:

#include<iostream>
#include<vector>

struct MyStruct {
    int a;
    float b;
};

int main() {
    // 创建一个空的 std::vector,元素类型为 MyStruct
    std::vector<MyStruct> myVector;

    // 添加新元素
    for (int i = 0; i < 10; ++i) {
        MyStruct newElement;
        newElement.a = i;
        newElement.b = i * 0.5f;
        myVector.push_back(newElement);
    }

    // 输出向量中的所有元素
    for (const auto &element : myVector) {
        std::cout << "a: "<< element.a << ", b: "<< element.b<< std::endl;
    }

    return 0;
}

在这个例子中,我们定义了一个名为 MyStruct 的结构体,并创建了一个名为 myVectorstd::vector。然后,我们添加了 10 个新元素到向量中,并在最后遍历并输出了向量中的所有元素。

注意,std::vector 会自动处理内存分配和扩展,因此你不需要手动管理内存。当向量需要更多空间时,它会重新分配一个更大的内存块,并将旧元素复制到新内存块中。这种自动扩展的行为使得使用 std::vector 非常方便。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业