C++學習筆記1

將最近工做中,方向轉換比較快,常常一個季度作這個,一個季度作那個,遇到一些經常使用的C++語法,而記性不太好常常忘記,整理一下筆記,將一些本身喜歡用的語法記錄下來,方便本身查閱。ios

 

 

map用法:
std::map<int, ststructInfo>::iterator iter = vec.begin();
for( , iter != vec.end(), iter++) {
  if(flage == iter->second.flage){
    pLarge = iter->second;
  }
}
std:map<int,string> personnel;
這樣就定義了一個用int做爲索引,並擁有相關聯的指向string的指針.
爲了使用方便,能夠對模板類進行一下類型定義:json

typedef map<int,CString> UDT_MAP_INT_CSTRING;
UDT_MAP_INT_CSTRING enumMap;
//數據的插入--第一種:用insert函數插入pair數據  
#include <map>  
#include <string>  
#include <iostream>   
using namespace std;  
int main()   
{  
    map<int, string> mapStudent;  
    mapStudent.insert(pair<int, string>(1, "student_one"));  
    mapStudent.insert(pair<int, string>(2, "student_two"));    
    map<int, string>::iterator iter;  
    for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)  
       cout<<iter->first<<' '<<iter->second<<endl;   
}  
//第二種:用insert函數插入value_type數據,下面舉例說明  
#include <map>  
#include <string>   
#include <iostream>   
using namespace std;  
int main()   
{  
    map<int, string> mapStudent;  
    mapStudent.insert(map<int, string>::value_type (1, "student_one")); 
    mapStudent.insert(map<int, string>::value_type (2, "student_two"));     
    map<int, string>::iterator iter;   
    for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)   
       cout<<iter->first<<' '<<iter->second<<endl;   
}  
//第三種:用數組方式插入數據,下面舉例說明    
#include <map>    
#include <string>   
#include <iostream>   
using namespace std;   
int main()   
{   
    map<int, string> mapStudent;  
    mapStudent[1] = "student_one";   
    mapStudent[2] = "student_two";  
    map<int, string>::iterator iter;   
    for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)  
        cout<<iter->first<<' '<<iter->second<<endl;  
}  數組


  以上三種用法,雖然均可以實現數據的插入,可是它們是有區別的,固然了第一種和第二種在效果上是完成同樣的,用insert函數插入數據,在數據的 插入上涉及到集合的惟一性這個概念,即當map中有這個關鍵字時,insert操做是插入數據不了的,可是用數組方式就不一樣了,它能夠覆蓋之前該關鍵字對 應的值。函數

map臨時保存數據時,調用通常設置保護鎖,保證數據準確性:this

 VOS_Mutex *m_mapIdMutex;

 

無序容器

C++11 引入了兩組無序容器:
std::unordered_map/std::unordered_multimap 和 std::unordered_set/std::unordered_multiset。spa

無序容器中的元素是不進行排序的,內部經過 Hash 表實現,插入和搜索元素的平均複雜度爲 O(constant)。指針

具體使用例子:排序

    m_msgHandlerMap["MariaWay"] = std::bind(&CSession::HandleCmd, this, 
        std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
class CSession{
public:
  int handleCmd(const Json::Value &root,  pLens &pt,  Json::Value &jsonRsp )
 
private:
  std::unordered_map<std::string, std::function<int(const Json::Value &root,  pLens &pt,  Json::Value &jsonRsp)>> m_msgHandlerMap;  //使用C++11特性模板,容器模板
}
相關文章
相關標籤/搜索