C++容器选择
2013-04-02 10:12
148 查看
下面列举了一些选择容器类型的法则:
1. 如果程序要求随机访问元素,则应使用 vector 或 deque 容器。
2. 如果程序必须在容器的中间位置插入或删除元素,则应采用 list 容器。
3. 如果程序不是在容器的中间位置,而是在容器首部或尾部插入或删除元
素,则应采用 deque 容器。
4. 如果只需在读取输入时在容器的中间位置插入元素,然后需要随机访问元
素,则可考虑在输入时将元素读入到一个 list 容器,接着对此容器重新
排序,使其适合顺序访问,然后将排序后的 list 容器复制到一个 vector
容器。
如果程序既需要随机访问又必须在容器的中间位置插入或删除元素,那应该
怎么办呢?
此时,选择何种容器取决于下面两种操作付出的相对代价:随机访问 list 容
器元素的代价,以及在 vector 或 deque 容器中插入/删除元素时复制元素的
代价。通常来说,应用中占优势的操作(程序中更多使用的是访问操作还是插入
/删除操作)将决定应该什么类型的容器。
决定使用哪种容器可能要求剖析各种容器类型完成应用所要求的各类操作的性能。
如果无法确定某种应用应该采用哪种容器,则编写代码时尝试只使用 vector 和
lists 容器都提供的操作:使用迭代器,而不是下标,并且避免随机访问元素。
这样编写,在必要时,可很方便地将程序从使用 vector 容器修改为使用 list 的
容器。
1. 如果程序要求随机访问元素,则应使用 vector 或 deque 容器。
2. 如果程序必须在容器的中间位置插入或删除元素,则应采用 list 容器。
3. 如果程序不是在容器的中间位置,而是在容器首部或尾部插入或删除元
素,则应采用 deque 容器。
4. 如果只需在读取输入时在容器的中间位置插入元素,然后需要随机访问元
素,则可考虑在输入时将元素读入到一个 list 容器,接着对此容器重新
排序,使其适合顺序访问,然后将排序后的 list 容器复制到一个 vector
容器。
如果程序既需要随机访问又必须在容器的中间位置插入或删除元素,那应该
怎么办呢?
此时,选择何种容器取决于下面两种操作付出的相对代价:随机访问 list 容
器元素的代价,以及在 vector 或 deque 容器中插入/删除元素时复制元素的
代价。通常来说,应用中占优势的操作(程序中更多使用的是访问操作还是插入
/删除操作)将决定应该什么类型的容器。
决定使用哪种容器可能要求剖析各种容器类型完成应用所要求的各类操作的性能。
如果无法确定某种应用应该采用哪种容器,则编写代码时尝试只使用 vector 和
lists 容器都提供的操作:使用迭代器,而不是下标,并且避免随机访问元素。
这样编写,在必要时,可很方便地将程序从使用 vector 容器修改为使用 list 的
容器。
相关文章推荐
- 【C++ STL】容器的选择
- [C++]各种容器特点总结—容器的选择问题
- 条款1:仔细选择你的容器--C++容器概览及其适用情境
- C++ 选择容器的提示
- C++ 之高效使用STL (STL 容器的选择)
- C++ STL容器时间复杂度下的最佳选择
- C/C++ STL容器的选择和适用,算法及其仿函数
- C++ 之高效使用STL (STL 容器的选择)
- C++中如何选择容器
- C++STL选择合适的容器以及容器操作的时间复杂度
- C++ 之高效使用STL (STL 容器的选择)
- c++之list容器简述--(boolan)
- C++ 容器类 vector使用
- C++中动态内存分配"new" 和 容器"vector"有什么区别?
- 用VS2012做MFC ActiveX控件并使用html、c#、c++测试容器
- c++容器(vector|map)中使用函数指针
- C++ STL 基础及应用(6) 容器
- c++之vector(容器)初始化、操作、顺序访问
- 关于C++中的容器
- (转载)你好,C++(20).4.2.2 表达并列条件选择的switch语句:如果……如果……如果……