设为首页 加入收藏

TOP

G.3 序列容器的其他成员(1)
2013-10-07 15:49:08 来源: 作者: 【 】 浏览:66
Tags:G.3 序列 容器 其他 成员

G.3  序列容器的其他成员(1)

模板类vector、forward_list、list、deque和array都是序列容器,它们都前面列出的方法,但forward_list不是可反转的,不支持表G.3所示的方法。序列容器以线性顺序存储一组类型相同的值。如果序列包含的元素数是固定的,通常选择使用array;否则,应首先考虑使用vector,它让array的随机存取功能以及添加和删除元素的功能于一身。然而,如果经常需要在序列中间添加元素,应考虑使用list或forward_list。如果添加和删除操作主要是在序列两端进行的,应考虑使用deque。

array对象的长度是固定的,因此无法使用众多序列方法。表G.5列出除array外的序列容器可用的其他方法(forward_list的resize( )方法的定义稍有不同)。同样,其中X是容器类型,如vector<int>;T是存储在容器中的类型,如int;a是类型为X的值;t是类型为x::value_type的左值或const右值;i和j是输入迭代器;[i, j]是有效的区间;il是类型为initilizer_list<value_type>的对象;p是指向a的有效const迭代器;q是可解除引用的有效const迭代器;[q1, q2]是有效的const迭代器区间;n是x::size_type类型的整数;Args是模板参数包,而args是形式为Args&&的函数参数包。

表G.5为序列容器定义的其他操作

    < xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

   

X(n, t)

创建一个序列容器,它包含tn个拷贝

X a(n, t)

创建一个名为a的序列容器,它包含tn个拷贝

X(i, j)

使用区间[i, j] 内的值创建一个序列容器

X a(i, j)

使用区间[i, j) 内的值创建一个名为a的序列容器

X(il)

创建一个序列容器,并将其初始化为il的内容

a = il;

il的值复制到a

a.emplace(p, args);

p前面插入一个类型为T的对象,创建该对象时

使用与args封装的参数匹配的构造函数

a.insert(p, t)

p之前插入t的拷贝,并返回指向该拷贝的迭

代器。T的默认值为T( ),即在没有显式初始化时,

用于T类型的值

a.insert(p, rv)

p之前插入rv的拷贝,并返回指向该拷贝的迭

代器;可能使用移动语义

a.insert(p, n, t)

p之前插入tn个拷贝

a.insert(p, i, j)

p之前插入[i, j)区间内元素的拷贝

a.insert(p, il)

等价于a.insert(p, il.begin( ), il.end( ))

a.resize(n)

如果n > a.size( ),则在a.end( )之前插入

n - a.size( )个元素;用于新元素的值为没有

显式初始化时,用于T类型的值;如果

n < a.size( ),则删除第n个元素之后的所有元素

a.resize(n, t)

如果n > a.size( ),则在a.end( )之前插入t

n - a.size( )个拷贝;如果n<a.size( ),则删除

n个元素之后的所有元素

a.assign(i, j)

使用区间[ij)内的元素拷贝替换a当前的内容

a.assign(n, t)

使用tn个拷贝替换a的当前内容。t的默

认值为T( ),即在没有显式初始化时,用于T类型的值

a.assign(il)

等价于a.assign(il.begin( ), il.end( ))

a.erase(q)

删除q指向的元素;返回一个指向q后面的元素的迭代器

a.erase(q1, q2)

删除区间[q1, q2]内的元素;返回一个迭代器,

该迭代器指向q2原来指向的元素

a.clear( )

erase(a.begin( ), a.end( )) 等效

a.front( )

返回*a.begin( )(第一个元素)

表G.6列出了一些序列类(vector、forward_list、list和deque)都有的方法。

表G.6为某些序列定义的操作

   

   

   

a.back( )

返回*a.end( )(最后一个元素)

vectorlistdeque

a.push_back(t)

t插入到a.end( )前面

vectorlistdeque

a.push_back(rv)

rv插入到a.end( )前面;

可能使用移动语义

vectorlistdeque

a.pop_back( )

删除最后一个元素

vectorlistdeque

a.emplace_back(args)

追加一个类型为T的对象,

创建该对象时使用与args

装的参数匹配的构造函数

vectorlistdeque

a.push_front(t)

t的拷贝插入到第一个元素前面

forward_listlistdeque

a.push_front(rv)

rv的拷贝插入到第一个元素

前面;可能使用移动语义

forward_listlistdeque

a.emplace_front( )

在最前面插入一个类型为T

的对象,创建该对象时使用与args

封装的参数匹配的构造函数

forward_listlistdeque

a.pop_front( )

删除第一个元素

forward_listlist

a[n]

返回*(a.begin( )+ n)

vectordequearray

a.at(n)

返回*(a.begin( )+ n);如果n>a.size

则引发out_of_range异常

vectordequearray


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇G.3 序列容器的其他成员(2) 下一篇G.1.1 新增的容器

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)
·Linux常用命令60条( (2025-12-25 00:50:40)
·nginx 监听一个端口 (2025-12-25 00:19:30)
·整个互联网就没有一 (2025-12-25 00:19:27)