vector,map 注意事項

###1.關於vector的越界訪問:性能

std::vector<int> list;
for (int i = 0; i < 5; i++) {
  list.push_back(i);
}
for (int i = 0; i < 6; i++) {
  std::cout << list[i];
}

首先以上的代碼能夠正確編譯經過並運行的,不過list[5]是0,在vector中,若是經過[i]下標訪問元素,是不會進行越界檢查的。因此通常狀況不要經過下標來直接訪問,建議使用code

list.ai[i];    //返回索引idx所指的數據,若是idx越界,拋出out_of_range。`

###2.map元素訪問 對於map使用下標操做,若是該關鍵字不存在容器,容器則會添加該關鍵字到容器中 用find來代替下標操做:索引

auto it = maps.find(id);
 if (it == maps.end())  //not find

map是紅黑樹,unordered_map是基於hash值的查找,對於通常key無序的推薦用unordered_map,這樣性能會好點,以上是vector和map使用過程當中 若是不注意的,會出一些問題。hash

相關文章
相關標籤/搜索