c ,vector的 和at區別

2021-07-26 12:58:50 字數 468 閱讀 9639

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 另外,當陣列中記憶體空間不夠時,會重新申請一塊記憶體空間並進行記...