STL学习笔记之 (二)容器 vector
2012-07-24 20:34
183 查看
STL,即Standard Template Library,是C++自带的标准模板库。主要由Alexander Stepanov开发完成,现在已成为C++的一个重要组成部分和特色之处。
STL使用了模板机制,将C++编程分解为了三个相互之间独立的部分:数据类型(基本数据类型、类和结构体)、容器(数组和新的STL容器类)以及算法(Algorithm)。
按照权威介绍,STL由为5个主要的部分组成,分别是:
容器(Container):能够保留并管理对象的对象
迭代器(Iterator):数组指针的抽象,可以在容器上针对不同的数据类型实现相应的算法
算法(Algorithm):顾名思义,就是操作流程
函数对象(Function Object):主要是一些语义规则的抽象,用于自定义容器或者算法
适应器(Adaptor):封装一个部件以提供另外的接口
Borland C++4.0及以上的版本支持STL。Microsoft Visual C++ 5.0及以上的版本支持STL。
使用STL的部件时,需要声明命名空间std。
容器。
STL中的容器分为两类:顺序容器(Sequence Container)和关联容器(Associative Container)。
顺序容器:即俗称的线性表,使用数组或者链表的形式存储和管理数据内容,STL中提供了三种基本的顺序容器:vector、list、deque。
关联容器:提供了基于key的存储管理机制,元素在插入之后就是排好序的,可以很快速地进行查找,STL提供了四种类型的关联容器:set、multiset、map、multimap。其中set和map要求插入的元素是不同的,而multiset和multimap可以插入多个相同的元素。
vector。
vector采用动态数组实现,在连续的内存空间存取数据成员,可以很方便地进行随机访问和后端插入,但是对于中间插入元素的效率比较低。
使用size()可以知道vector中已经存放的元素个数,capacity()可以知道已分配内存的元素个数。由于vector是采用动态分配内存的机制,所以在实际应用中,可以根据需要使用reserve来保持固定大小(最多的元素个数),以避免反复分配内存带来的开销。empty可以用来查看vector是否为空。
可以使用[size_type n]操作符来得到给定索引对应的元素,也可以使用at(size_type n)函数来查看对应索引的元素。front()和back()分别返回vector中第一个和最后一个元素。
push_back(const T&)和pop_back()可以在最后一个位置插入或者删除元素,insert(iterator position, const T& x)和erase(iterator position)可以来插入或者删除任意位置的元素,clear()可以清空整个vector的元素。
begin()和end()分别返回指向第一个元素和最后一个元素之后位置(past-the-end)的迭代器,rbegin()和rend()分别返回反向的指向最后一个元素和第一个元素之前元素的迭代器。
swap(vector&)可以与另外的vector的内容进行交换。
STL使用了模板机制,将C++编程分解为了三个相互之间独立的部分:数据类型(基本数据类型、类和结构体)、容器(数组和新的STL容器类)以及算法(Algorithm)。
按照权威介绍,STL由为5个主要的部分组成,分别是:
容器(Container):能够保留并管理对象的对象
迭代器(Iterator):数组指针的抽象,可以在容器上针对不同的数据类型实现相应的算法
算法(Algorithm):顾名思义,就是操作流程
函数对象(Function Object):主要是一些语义规则的抽象,用于自定义容器或者算法
适应器(Adaptor):封装一个部件以提供另外的接口
Borland C++4.0及以上的版本支持STL。Microsoft Visual C++ 5.0及以上的版本支持STL。
使用STL的部件时,需要声明命名空间std。
容器。
STL中的容器分为两类:顺序容器(Sequence Container)和关联容器(Associative Container)。
顺序容器:即俗称的线性表,使用数组或者链表的形式存储和管理数据内容,STL中提供了三种基本的顺序容器:vector、list、deque。
关联容器:提供了基于key的存储管理机制,元素在插入之后就是排好序的,可以很快速地进行查找,STL提供了四种类型的关联容器:set、multiset、map、multimap。其中set和map要求插入的元素是不同的,而multiset和multimap可以插入多个相同的元素。
vector。
vector采用动态数组实现,在连续的内存空间存取数据成员,可以很方便地进行随机访问和后端插入,但是对于中间插入元素的效率比较低。
使用size()可以知道vector中已经存放的元素个数,capacity()可以知道已分配内存的元素个数。由于vector是采用动态分配内存的机制,所以在实际应用中,可以根据需要使用reserve来保持固定大小(最多的元素个数),以避免反复分配内存带来的开销。empty可以用来查看vector是否为空。
可以使用[size_type n]操作符来得到给定索引对应的元素,也可以使用at(size_type n)函数来查看对应索引的元素。front()和back()分别返回vector中第一个和最后一个元素。
push_back(const T&)和pop_back()可以在最后一个位置插入或者删除元素,insert(iterator position, const T& x)和erase(iterator position)可以来插入或者删除任意位置的元素,clear()可以清空整个vector的元素。
begin()和end()分别返回指向第一个元素和最后一个元素之后位置(past-the-end)的迭代器,rbegin()和rend()分别返回反向的指向最后一个元素和第一个元素之前元素的迭代器。
swap(vector&)可以与另外的vector的内容进行交换。
相关文章推荐
- STL学习笔记----3.容器 vector 和 deque
- C++ STL学习笔记二 vector向量容器
- C++ STL--vector向量容器学习笔记
- STL学习笔记之 (五)容器 vector deque list 使用条件
- STL学习笔记之容器--vector(二)源码剖析
- STL学习笔记— —容器vector
- C++学习笔记——STL(二)vector容器
- STL学习笔记----3.容器 vector 和 deque
- STL学习笔记3— —容器vector
- STL学习笔记-vector容器(动态数组)
- STL学习笔记之容器--vector(一)
- STL学习笔记--4、序列式容器之vector
- STL序列容器vector、deque、list和array学习笔记
- stl学习笔记2(容器,函数对象)
- C++ Primer 学习笔记_29_STL实践与分析(3) --顺序容器的操作(下)
- C++ Primer 学习笔记_46_STL实践与分析(20)--容器特有的算法
- C++学习之STL容器vector
- 插入容器STL学习笔记(八) 序列式容器 共性
- STL学习笔记之容器--deque(二)源码剖析
- 今日学习札记——STL常用容器:vector、list、set和multiset、map和multimap(11.17)