三、 顺序容器操作
-
删除元素
- 容器操作可能使迭代器失效
- 添加元素
- vector/string:若存储空间重新分配→指针/引用/迭代器均失效;若没有重新分配→插入位置之后的指针/引用/迭代器/失效
- deque:插入到首尾位置之外→指针/引用/迭代器均失效;首位位置插入→迭代器失效,指向存在元素的引用和指针不失效。
- list/forward_list:指针/引用/迭代器均有效
- 删除元素→指向被删除元素的指针/引用/迭代器均失效
- vector/string:指向被删除元素之前→指针/引用/迭代器均失效;指向被删除元素之后→指针/引用/迭代器均失效
- deque:删除到首尾位置之外→指针/引用/迭代器均失效;删除尾元素→尾后迭代器失效,其他迭代器、引用和指针不失效;删除首元素→其他迭代器、引用和指针不受影响
- list/forward_list:指向其他位置的指针/引用/迭代器仍然有效
- 使用失效的迭代器、指针、引用是严重错误→管理迭代器
- 编写改变容器的循环程序→每次循环都更新迭代器、引用和指针
- 不要保存.end()返回的迭代器,而是每次调用.end()
五、 额外的string操作
- 数值转换
- to_string(val):返回val的string表示,val可以是任何算数类型
- stoi(s,p,b):返回s的起始子串(表示整数内容)的数值,返回值类型为int。b表示转换所用基数,默认为10。p是size_t指针,用来保存s中第一个非数值字符的下标,p默认为0。类似的还有stol()、stoul()。。。
- stof(s,p) :返回值类型为浮点数
- string搜索操作
- s.find(args),查找s中args第一次出现的位置
- s.rfind(args),查找s中args最后一次出现的位置
- 修改string的操作
- s.insert(pos,args)
- s.erase(pos,len)
- s.assign(args)
- s.append(args)
- s.replace(range,args)