###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