自己寫的**,因為我記憶力差的驚人,所以一方面以後我用到這個**直接複製貼上反正會忘,就不費力記了。另一方面,看到國內很多這樣現成的例子少,所以方便大家。
用函式的方法實現:
從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...