將最近工做中,方向轉換比較快,常常一個季度作這個,一個季度作那個,遇到一些經常使用的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
C++11 引入了兩組無序容器:
std::unordered_map/std::unordered_multimap 和 std::unordered_set/std::unordered_multiset。spa
無序容器中的元素是不進行排序的,內部經過 Hash 表實現,插入和搜索元素的平均複雜度爲 O(constant)。指針
具體使用例子:排序