std::set, std::list, std::vector在erase的区别
来源:互联网 发布:阿里云深圳机房速度 编辑:程序博客网 时间:2024/04/23 21:41
erase函数接口原型
1. std::list::erase
// c++98:iterator erase (iterator position);iterator erase (iterator first, iterator last);//c++11:iterator erase (const_iterator position);iterator erase (const_iterator first, const_iterator last);// 返回值:指向被删除元素的下一个元素的迭代器.如果删除的是最后一个元素,则指向end.
2. std::vector::erase
// c++98:iterator erase (iterator position);iterator erase (iterator first, iterator last);//c++11:iterator erase (const_iterator position);iterator erase (const_iterator first, const_iterator last);// 返回值:指向被删除元素的下一个元素的迭代器.如果删除的是最后一个元素,则指向end.
3. std::set::erase
// c++98:(1) void erase (iterator position);(2) size_type erase (const value_type& val);(3) void erase (iterator first, iterator last);// 注意:无返回值!//c++11:(1) iterator erase (const_iterator position);(2) size_type erase (const value_type& val);(3) iterator erase (const_iterator first, const_iterator last);// 返回值:指向被删除元素的下一个元素的迭代器.如果删除的是最后一个元素,则指向end.
erase在遍历时的使用
在c++98标准中,std::set和std::list可采用如下方式:
/** * 仅适用于std::set */#include <iostream>#include <set>int main(){ std::set<int> test; for (int i = 0;i < 10; ++i) test.insert(i); std::set<int>::iterator it = test.begin(); while ( it != test.end()) { if ( *it == 2 || *it == 3) { test.erase(it++); } else it++; } return 0;}
而std::vector和std::list可用如下方式:
/** * 适用于std::vector和std::list */#include <iostream>#include <vector>int main(){ std::vector<int> test; for (int i = 0;i < 10; ++i) test.push_back(i); std::vector<int>::iterator it = test.begin(); while ( it != test.end()) { if ( *it == 2 || *it == 3) { it = test.erase(it); } else it++; } return 0;}
也就是说,std::set仅能用第一种遍历方式,std::vector只能用第二种,而std::list两种都可以。
在c++11标准中,以上接口已经做了统一,都可以采用下面这种方式。
阅读全文
0 0
- std::set, std::list, std::vector在erase的区别
- std::list<T> , std::vector<T> erase
- std::vector,std::deque,std::list的区别的使用
- std::vector::erase
- std::vector::erase()
- 【面试】std::vector 和 List 的区别
- std::vector的erase的问题
- std::vector的find();与erase();
- std::vector<string>的find();与erase();
- std::vector中erase的用法误区
- std::vector中erase函数的用法
- 使用std的vector,map,list, set等注意问题
- std vector与std list的效率比较
- std vector与std list的效率比较
- ACM-括号配对问题 ASCII码的运用|std::vector/std::list的区别与使用
- std::vector<std::string>::size_type和 int的区别
- std map set 区别
- std::set::lower_bound 和std::lower_bound的区别
- CSS margin 属性
- Spring-boot + atomikos + druid分布式事务配置
- C# 逆变与协变
- OPC UA --open62541学习
- AlertDialog用法
- std::set, std::list, std::vector在erase的区别
- 搭建基于以太坊的私有链环境
- Jquery将一个object对象转换成json字符串
- 树形DP---例题:hdu2196 Computer
- 计算机类学术期刊SCI/EI期刊核心期刊有哪些?
- SQL优化的五个建议
- python里为什么要使用isinstance函数
- Restful Webservice非常简单易懂的实例
- 丢手绢 (暴力)