在map中儲存struct,及map的檔案輸入輸出

2021-06-04 05:04:33 字數 2445 閱讀 6554

自己寫的**,因為我記憶力差的驚人,所以一方面以後我用到這個**直接複製貼上反正會忘,就不費力記了。另一方面,看到國內很多這樣現成的例子少,所以方便大家。

用函式的方法實現:

從map輸出到檔案,map的value是struct

#include

#include

#include

#include

using namespace std;

struct studentid ;

studentid makestudentid(const string name, const string address)

;return c;

}int main()

;mapstudentid_table;

studentid_table.insert(make_pair(number[0],makestudentid("tom","dalian")));

studentid_table.insert(make_pair(number[1],makestudentid("lee","shenyangi")));

ofstream outfile("newfile.txt");

map::const_iterator map_it = studentid_table.begin();

while(map_it!= studentid_table.end())

studentid(string newname, string newaddress): name(newname), address(newaddress) {}

string name;

string address;

};int main()

;mapstudentid_table;

studentid_table.insert(make_pair(number[0],studentid("tom","dalian")));

studentid_table.insert(make_pair(number[1],studentid("lee","shenyangi")));

ofstream outfile("newfile.txt");

map::const_iterator map_it = studentid_table.begin();

while(map_it!= studentid_table.end())

;mapstudentid_table;

studentid_table.insert(make_pair(number[0],studentid("tom","dalian")));

studentid_table.insert(make_pair(number[1],studentid("lee","shenyangi")));

等價於:

mapstudentid_table;

studentid_table[49]=studentid("tom","dalian");

studentid_table[21]=studentid("lee","shenyangi");

輸出結果如下

-bash-4.1$ more newfile.txt

21lee

shenyangi

49tom

dalian

不管建立map時哪個學號先建立,順序輸出時永遠是按照key值由小到大排列的,這是map資料結構本身的優點

從檔案輸入:

#include

#include

#include

#include

using namespace std;

struct studentid

studentid(string newname, string newaddress): name(newname), address(newaddress) {}

string name;

string address;

};int main()

查詢key是否存在在map中,如果存在就輸出,如果不存在什麼也不做

#include

#include

#include

#include

using namespace std;

struct studentid

studentid(string newname, string newaddress): name(newname), address(newaddress) {}

string name;

string address;

};int main()

infile.close();

map ::iterator map_it;

if((map_it=studentid_table.find(66))!= studentid_table.end())

return 0;

}

關於list中儲存map資料重複問題

以下兩段 中儲存的資料有所差異public static void main string args for int j 0 j list1.size j 第二組 list list2 new arraylist for int i 0 i list.size i for int j 0 j lis...

資料在堆疊中儲存方式

一 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注malloc,calloc,new申請的...

在table中儲存nil值

在table中,nil不可以作為key,否則會有執行報錯 而且,有時候使用 獲取長度時,會因為nil而導致無法獲取到正確的長度 如下,有乙個函式,它是用來把引數進行反序,使用 獲取長度,但是長度出現了問題 function reverse local t for i 1,t 2 do local j...