C/C++教程

STL模板库 常用函数 vector向量容器

本文主要是介绍STL模板库 常用函数 vector向量容器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

STL模板库

STL是Standard Template Library缩写,中文名字叫标准模板库,由惠普实验室提供,共有三类内容:
算法:以函数模板形式实现的常用算法,如:max、min、swap、find、sort。
容器:以类模板形式实现的常用数据结构,如:栈、队列、链式表、顺序表、红黑树。
迭代器:它是容器的成员,用于帮助访问容器中的元素,使用方法类似于指针。

常用函数

#include <algorithm>
iterator find( iterator start, iterator end, const TYPE& val );
功能:顺序查找
start:第一元素的指针或迭代器
end:最后一个元素的下一个位置
val:待查找的关键数据
返回值:
    找到 [start,end) 范围的指针或迭代器
    找不到则返回end

#include <algorithm>
void sort( iterator start, iterator end );
void sort( iterator start, iterator end, StrictWeakOrdering cmp );
功能:快速排序
start:第一元素的指针或迭代器
end:最后一个元素的下一个位置
cmp:
    bool cmp(T a,T b)
    {
        return a<b;
    }

vector向量容器

头文件:vector
采用顺序结构的内存存储数据,可以通过下标随机访问,因此也被称为数组容器。

构造函数:
vector( size_type num, const TYPE &val );
num:数组的长度
val:初始化数据

vector( input_iterator start, input_iterator end );
功能:使用一组数据初始化数组
start:第一个元素
end:最后一个元素的下一个位置

支持的运算符:
    =、==、!=
    <=、>=、<、> 按照字符串的比较规则进行比较的 
    [] 下标 >= size() 就会出现段错误,数组不会随着访问而扩展内存,而是添加元素才扩展内。

常用成员函数:
void assign( input_iterator start, input_iterator end);
功能:使用一组数据给数组赋值
void assign( size_type num, const TYPE &val );
功能:给数组的前num个元素赋值为val

TYPE at( size_type loc);
功能:访问数组成员,功能相当于[],当loc越界时at函数会抛出异常,而[]越界时可能出现段错误、脏数据、一切正常。

TYPE back();
功能:返回数组中的最后一个元素
TYPE front();
功能:返回数组中的第一个元素

iterator begin();
const_iterator begin() const;
功能:返回指向第一个的元素的迭代器
iterator end();
const_iterator end() const;
功能:返回指向最后一个元素下一个位置的迭代器
注意:迭代器对于vector的用处不大,但对于其它容器迭代器是唯一的遍历方式。

size_type capacity();
功能:获取数组的容量

void clear();
功能:清空数组中的所有元素,容量不变,元素数量变为0。

iterator erase( iterator loc );
功能:删除一个元素
iterator erase( iterator start, iterator end );
功能:删除一部分元素
注意:删除元素时必须提供迭代器

iterator insert( iterator loc, const TYPE &val );
功能:在某个元素之前插入一个元素,位置以迭代器的形式提供
void insert( iterator loc, size_type num, const TYPE &val );
功能:在某个元素之前插入n个元素,位置以迭代器的形式提供
void insert( iterator loc, input_iterator start, input_iterator end );
功能:在某个元素之前插入一组元素,位置以迭代器的形式提供

size_type max_size();
功能:用于计算数组能存储的最大元素数量,因为数组的内存扩张是有限度的(4294967295),具体能存储多个元素由元素的类型决定。

void pop_back();
功能:删除最后一个元素

void push_back( const TYPE &val );
功能:在末尾添加一个元素,当数组内存不够会在现在的基础上扩展一倍内存。

reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
功能:返回一个逆向迭代器,它指向最后个元素
reverse_iterator rend();
const_reverse_iterator rend() const;
功能:返回一个逆向迭代器,它指向第一个元素前一个位置

void reserve( size_type size );
功能:修改数组的容量,只能往大了改。

void resize( size_type size, TYPE val );
功能:修改数组的元素数量
    可以往大了改,相当增加元素 值是val
    也可以往小了改,相当于删除元素

void swap( vector &from );
功能:交换两个数组的元素
这篇关于STL模板库 常用函数 vector向量容器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!