三、 順序容器操作
-
刪除元素
image.png - 容器操作可能使迭代器失效
- 添加元素
- vector/string:若存儲(chǔ)空間重新分配→指針/引用/迭代器均失效;若沒有重新分配→插入位置之后的指針/引用/迭代器/失效
- deque:插入到首尾位置之外→指針/引用/迭代器均失效;首位位置插入→迭代器失效,指向存在元素的引用和指針不失效。
- list/forward_list:指針/引用/迭代器均有效
- 刪除元素→指向被刪除元素的指針/引用/迭代器均失效
- vector/string:指向被刪除元素之前→指針/引用/迭代器均失效;指向被刪除元素之后→指針/引用/迭代器均失效
- deque:刪除到首尾位置之外→指針/引用/迭代器均失效;刪除尾元素→尾后迭代器失效,其他迭代器、引用和指針不失效;刪除首元素→其他迭代器、引用和指針不受影響
- list/forward_list:指向其他位置的指針/引用/迭代器仍然有效
- 使用失效的迭代器、指針、引用是嚴(yán)重錯(cuò)誤→管理迭代器
- 編寫改變?nèi)萜鞯难h(huán)程序→每次循環(huán)都更新迭代器、引用和指針
- 不要保存.end()返回的迭代器,而是每次調(diào)用.end()
五、 額外的string操作
- 數(shù)值轉(zhuǎn)換
- to_string(val):返回val的string表示,val可以是任何算數(shù)類型
- stoi(s,p,b):返回s的起始子串(表示整數(shù)內(nèi)容)的數(shù)值,返回值類型為int。b表示轉(zhuǎn)換所用基數(shù),默認(rèn)為10。p是size_t指針,用來保存s中第一個(gè)非數(shù)值字符的下標(biāo),p默認(rèn)為0。類似的還有stol()、stoul()。。。
- stof(s,p) :返回值類型為浮點(diǎn)數(shù)
- string搜索操作
- s.find(args),查找s中args第一次出現(xiàn)的位置
- s.rfind(args),查找s中args最后一次出現(xiàn)的位置
- 修改string的操作
- s.insert(pos,args)
- s.erase(pos,len)
- s.assign(args)
- s.append(args)
- s.replace(range,args)
