簡體   English   中英

C ++列表和指針

[英]C++ lists and pointers

我正在做家庭作業,想知道這實際上定義為:

list < NAME > * m_ofList

名稱來自struct如下所示:

typedef struct name
{
    int age;
    int height;
} NAME;

我想知道它是什么,所以我知道如何插入或訪問它: push_backinsert

所以我現在理解這一點,但由於某種類型的內存訪問而陷入困境:它產生了一個分段錯誤,我無法弄清楚這一點。 我在哪里需要初始化我的新列表? 它在構造函數或函數中不起作用。 僅供參考,它是一個私有列表,因此它只能用於成員函數(即m_ofList)。 如果有人願意,我可以制作代碼......

假設using namespace stdusing std::list ,這是指向類/結構NAME的對象列表的指針。 要將對象放入其中,首先需要對其進行初始化:

m_ofList = new list<NAME>;

要么:

m_ofList = &(some already initialized list of NAME objects);

然后你可以把物品放進去:

NAME x;
x.age = 15;
x.height = 150;
m_ofList->push_back(x);
m_ofList->insert(m_ofList->begin(), x);

如果您使用new動態分配列表,則在完成后需要妥善處理:

delete m_ofList;

我的問題是,為什么它首先是一個指針? 您可以像這樣聲明它(如您所願):

list<Name> m_ofList;

然后你不必擔心處理它。 它將通過范圍規則來處理。

無論您選擇在列表中保留的數據類型如何,成員函數都將保持不變。
有關可以為STL列表容器調用的成員函數的文檔可以在此處找到。
您可以創建包含任何數據類型的列表,因為它們是使用稱為模板的構造構建的。 模板允許您創建不同數據類型的列表。
例:

#include <list>
#include <string>
#include <cstdlib>


int main(){

    //here is a list that can only hold integers
    std::list<int> list1{1,2,3,4,5};

    //here is a list that can only hold characters
    std::list<char> list2{'a','b','c','d','e'};

    //we can create a new type to represent a person
    struct person{
        std::string name;
        int age;
        int height;

        person(std::string const& name_, int const& age_, int const& height_):
        name(name_), age(age_) ,height(height_){}
    };

    //and now that we have a new person type, we can create a list to hold people
    std::list<person> list3{{"John",21,70},{"Jane",20,68}};

    return EXIT_SUCCESS;
}

用g ++ -std = c ++ 0x -o main main.cpp編譯

在C ++中,這很可能是STL列表。 您可以在這里找到一些文檔: http//www.sgi.com/tech/stl/List.html

它是一個STL list ,它是變量,結構或對象的鏈接列表。 它支持在任何位置插入,刪除操作。在list < NAME > * m_ofList m_oflist是指向Name對象列表的指針。 這是STL列表的一個很好的教程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM