C++之vector容器初学(二)——插入和删除
插入操作:
理論知識
2?vector.insert(pos,elem); ??//在pos位置插入一個elem元素的拷貝,返回新數據的位置。
2?vector.insert(pos,n,elem); ??//在pos位置插入n個elem數據,無返回值。
2?vector.insert(pos,beg,end); ??//在pos位置插入[beg,end)區間的數據,無返回值?
簡單案例
vector<int> vecA;
vector<int> vecB;
?
vecA.push_back(1);
vecA.push_back(3);
vecA.push_back(5);
vecA.push_back(7);
vecA.push_back(9);
?
vecB.push_back(2);
vecB.push_back(4);
vecB.push_back(6);
vecB.push_back(8);
?
vecA.insert(vecA.begin(), 11); //{11, 1, 3, 5, 7, 9}
vecA.insert(vecA.begin()+1,2,33); //{11,33,33,1,3,5,7,9}
vecA.insert(vecA.begin() , vecB.begin() , vecB.end() ); //{2,4,6,8,11,33,33,1,3,5,7,9}
測試代碼:
?
[cpp]?view plain?copy
?
?
vector的刪除
理論知識
2?vector.clear(); //移除容器的所有數據
2?vec.erase(beg,end); ?//刪除[beg,end)區間的數據,返回下一個數據的位置。
2?vec.erase(pos); ???//刪除pos位置的數據,返回下一個數據的位置。
簡單案例:
刪除區間內的元素
vecInt是用vector<int>聲明的容器,現已包含按順序的1,3,5,6,9元素。
vector<int>::iterator itBegin=vecInt.begin()+1;
vector<int>::iterator itEnd=vecInt.begin()+2;
vecInt.erase(itBegin,itEnd);
//此時容器vecInt包含按順序的1,6,9三個元素。
?
假設?vecInt?包含1,3,2,3,3,3,4,3,5,3,刪除容器中等于3的元素
for(vector<int>::iterator it=vecInt.being(); it!=vecInt.end(); ) ???//小括號里不需寫 ?++it
{
???if(*it == 3)
???{
????????it ?= ?vecInt.erase(it); ??????//以迭代器為參數,刪除元素3,并把數據刪除后的下一個元素位置返回給迭代器。
?????????//此時,不執行 ?++it; ?
???}
???else
???{
???????++it;
???}
}
?
//刪除vecInt的所有元素
vecInt.clear(); //容器為空
?
測試代碼:
?
[cpp]?view plain?copy
總結
以上是生活随笔為你收集整理的C++之vector容器初学(二)——插入和删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ vector容器删除操作
- 下一篇: RROR 1221 (HY000):