2009年10月9日 星期五

STL

使用前要先載入
#include............
====================
特性
vector m_vec;
list m_lst;      //去掉重複.排序
stack m_stk;     //filo: first in last out
queue m_que;   //fifo: first in first out
set m_set;
map m_map;    //去掉重複.排序

====================
vector的用法:
正走訪:
for(vector::iterator p=m_vec.begin();p!=m_vec.end();p++)
 {string& str=*p;}

逆走訪並取用
for(vector::reverse_iterator p=m_vec.rbegin();p!=m_vec.rend();p++)
 {string& str=*p;}

前後中取用:
m_vec.front(); m_vec.back(); m_vec.at(index); m_vec[index];

前後中新增:
m_vec.insert(m_vec.begin(),data); m_vec.push_back(data); m_vec.insert(p,data);
m_vec.insert(&m_vec[index],data);

前後中移除
m_vec.erase(m_vec.begin()); m_vec.erase_back(); m_vec.erase(p);

元素個數    清除全部      尋找元素
m_vec.size();   m_vec.clear();   p=find(m_vec.begin(),m_vec.end(),data);

====================

list的用法:
正走訪並取用
for(list::iterator p=m_lst.begin();p!=m_lst.end();p++)
  {string& str=*p;}

逆走訪並取用
for(list::reverse_iterator p=m_lst.rbegin();p!=m_lst.rend();p++)
  {string& str=*p;}

前後取用
m_lst.front();  m_lst.back();

前後中新增
m_lst.push_front(data); m_lst.push_back(data); m_lst.insert(p,data);

前後中移除
m_lst.pop_front();  m_lst.pop_back();  m_lst.erase(p);

元素個數    清除全部    尋找元素
m_lst.size();   m_lst.clear();  p=find(m_lst.begin(),m_lst.end(),data);

====================

stack的用法:
正走訪並取用
for(stack::container_type::iterator p=m_stk.c.begin();p!=m_stk.c.end();p++)
 {string& str=*p;}

逆走訪並取用
for(stack::container_type::reverse_iterator p=m_stk.c.rbegin();p!=m_stk.c.rend();p++)
 {string& str=*p;}

新增取用移除
m_stk.push(data); m_stk.top(); m_stk.pop();

前後中取用
m_stk.c.front(); m_stk.c.back(); m_stk.c.at(index);

前後中新增
m_stk.c.push_front(data); m_stk.c.push_back(data); m_stk.c.insert(p,data);

後中移除前
m_stk.c.pop_front(); m_stk.c.pop_back(); m_stk.c.erase(p);

元素個數    清除全部     尋找元素
m_stk.size();  m_stk.c.clear();  p=find(m_stk.c.begin(),m_stk.c.end(),data);

====================

queue的用法:
正走訪並取用
for(queue::container_type::iterator p=m_que.c.begin();p!=m_que.c.end();p++)
 {string& str=*p;}

逆走訪並取用
for(queue::container_type::reverse_iteratorp=m_que.c.rbegin();p!=m_que.c.rend();p++)
 {string& str=*p;}

新增取用移除
m_que.push(data); m_que.front(); m_que.back(); m_que.pop();

前後中取用
m_que.c.front(); m_que.c.back(); m_que.c.at(index);

前後中新增
m_que.c.push_front(data); m_que.c.push_back(data); m_que.c.insert(p,data);

前後中移除
m_que.c.pop_front(); m_que.c.pop_back(); m_que.c.erase(p);

元素個數   清除全部     尋找元素
m_que.size(); m_que.c.clear();  p=find(m_que.c.begin(),m_que.c.end(),data);

====================

set的用法:
正走訪並取用
for(set::iterator p=m_set.begin();p!=m_set.end();p++)
{string& str=*p;}

逆走訪並取用
for(set::reverse_iterator p=m_set.rbegin();p!=m_set.rend();p++)
 {string& str=*p;}

新增取用移除
m_set.insert(data); m_set.erase(data);

前後取用
*m_set.begin(); *m_set.rbegin();

前後中新增
m_set.insert(data);

前後中移除
m_set.erase(m_set.begin()) ;m_set.erase(p);

元素個數   清除全部     尋找元素
m_set.size();  m_set.clear();  p=m_set.find(data); 沒找到: p==m_set.end();

====================

map的用法:
正走訪並取用
for(map::iterator p=m_map.begin();p!=m_map.end();p++)
 {const string& str=(*p).first; int& value=(*p).second;}

逆走訪並取用
for(map::reverse_iterator p=m_map.rbegin();p!=m_map.rend();p++)
 {const string& str=(*p).first; int& value=(*p).second;}

新增         取用        移除
m_map[data]=value;  m_map[data];   m_map.erase(data);


取用          元素個數     清除全部
(*p).first;  (*p).second;  m_map.size();  m_map.clear();


尋找元素        尋找元素
p=m_map.find(data);   m_map[data];

沒有留言:

張貼留言