溫馨提示×

如何實現(xiàn)C++ struct數(shù)組的動態(tài)擴容

c++
小樊
103
2024-09-10 19:30:24
欄目: 編程語言

在 C++ 中,可以使用 std::vector 來實現(xiàn)結(jié)構(gòu)體數(shù)組的動態(tài)擴容。std::vector 是一個可自動調(diào)整大小的模板類,它包含了一個動態(tài)數(shù)組,并提供了一些方法來操作這個數(shù)組。

首先,需要包頭文件。然后,創(chuàng)建一個std::vector,其元素類型為你的結(jié)構(gòu)體類型。當需要添加新元素時,可以使用 push_back() 方法將新元素添加到向量的末尾。std::vector` 會在需要時自動擴展其內(nèi)部數(shù)組以適應(yīng)新元素。

下面是一個簡單的例子:

#include<iostream>
#include<vector>

struct MyStruct {
    int a;
    float b;
};

int main() {
    // 創(chuàng)建一個空的 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 的結(jié)構(gòu)體,并創(chuàng)建了一個名為 myVectorstd::vector。然后,我們添加了 10 個新元素到向量中,并在最后遍歷并輸出了向量中的所有元素。

注意,std::vector 會自動處理內(nèi)存分配和擴展,因此你不需要手動管理內(nèi)存。當向量需要更多空間時,它會重新分配一個更大的內(nèi)存塊,并將舊元素復(fù)制到新內(nèi)存塊中。這種自動擴展的行為使得使用 std::vector 非常方便。

0