2012年2月10日

【C++】STL::map,一個兩兩對應的簡單資料結構



map是命名空間(name space)STD內的標準函式庫STL(Standard Template Library)裡的一個物件(class)
主要功能是作一個簡單的資料結構,可以存放多組key,value的對應資料。
使用方法也很簡單


#include <map>

#include <iostream>



using namespace std;



int main(int argc, char** argv) {

     //map<key, value=""> mapname;

     map<int, char*=""> items;

     items[12345] = "books";

     items[12346] = "tables";

     items[123456] = "phone";



    return 0;

}




這樣就輕鬆建立出一個ID(int)和物品(char*)的對應結構了!
key和value可以是任意的型態
也可以寫成

map<string, myclass> mapsomthing;

很方便使用吧!

如果要存取某個值也很簡單
跟用陣列一樣

cout << items[12345]; //print books

或是使用迴圈走訪每組數值的方式


for(map<int, char*>::iterator it = items.begin(); it != items.end(); it++){

        cout << "key: " << it->first << " value: " << it->second << endl;

}

基本上只要會靈活運用
這些就很夠用了
其餘還有可能會用到的有:find, erase, swap
使用方式都大同小異,看過範例之後應該就能懂了


map所擁有的member function如下:

member functions:
map::begin
map::clear
map::count
map::empty
map::end
map::equal_range
map::erase
map::find
map::get_allocator
map::insert
map::key_comp
map::lower_bound
map::max_size
map::operator=
map::operator[]
map::rbegin
map::rend
map::size
map::swap
map::upper_bound
map::value_comp


參考網站:
http://www.cplusplus.com/reference/stl/map/

沒有留言:

張貼留言