[英]C++ lists and pointers
我正在做家庭作業,想知道這實際上定義為:
list < NAME > * m_ofList
名稱來自struct
如下所示:
typedef struct name
{
int age;
int height;
} NAME;
我想知道它是什么,所以我知道如何插入或訪問它: push_back
, insert
等 。
所以我現在理解這一點,但由於某種類型的內存訪問而陷入困境:它產生了一個分段錯誤,我無法弄清楚這一點。 我在哪里需要初始化我的新列表? 它在構造函數或函數中不起作用。 僅供參考,它是一個私有列表,因此它只能用於成員函數(即m_ofList)。 如果有人願意,我可以制作代碼......
假設using namespace std
或using 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.