std::vector
a;std::cout
《上面輸出是0.容器初始化什麼都不做,大小為0;
std::vector
a;// std::couta.at(0)=1;
下標賦值會顯示sigsegv段錯誤,越界錯誤.
at賦值會顯示terminate called after throwing an instance of 『std::out_of_range』
c++標準不要求vector::operator進行下標越界檢查,原因是為了效率,總是強制下標越界檢查會增加程式的效能開銷。所以通常使用vector兩種方法:
(1)知道vector的大小,初始化時就設立大小.也就是知道下標操作肯定是沒有越界的.
(2)用push_back比較安全.
C vector和list的區別
1.vector資料結構 vector和陣列類似,擁有一段連續的記憶體空間,並且起始位址不變。因此能高效的進行隨機訪問,時間複雜度為o 1 但因為記憶體空間是連續的,所以在進行插入和刪除操作時,會造成記憶體塊的拷貝,時間複雜度為o n 另外,當陣列中記憶體空間不夠時,會重新申請一塊記憶體空間並進行記...
C vector和list的區別
1.vector資料結構 vector和陣列類似,擁有一段連續的記憶體空間,並且起始位址不變。因此能高效的進行隨機訪問,時間複雜度為o 1 但因為記憶體空間是連續的,所以在進行插入和刪除操作時,會造成記憶體塊的拷貝,時間複雜度為o n 另外,當陣列中記憶體空間不夠時,會重新申請一塊記憶體空間並進行記...
C vector和list的區別
1.vector資料結構 vector和陣列類似,擁有一段連續的記憶體空間,並且起始位址不變。因此能高效的進行隨機訪問,時間複雜度為o 1 但因為記憶體空間是連續的,所以在進行插入和刪除操作時,會造成記憶體塊的拷貝,時間複雜度為o n 另外,當陣列中記憶體空間不夠時,會重新申請一塊記憶體空間並進行記...