目前位置: VCer资源中心 >>> VCer文章 >>> C++/MFC基础

[本帖已阅读1886次 分值80 回复0次] 张贴资源 发回信箱 控制面板

STL之vector容器

提供者:oases2008 张贴时间:2005-01-01 00:00:00.0 出处:http://www.jblook.cn 作者:不祥

STL之vector容器(2005-01-01 00:00:00.0)


oases2008


 
级别: VCer小兵
头衔: VCer会员

经验: 258
作品: 3
分会: 华北分会
注册: 2007-01-25 12:00:19.0
登录: 2007-10-30 16:38:36.0
标准模版类也定义了一个模版类basic_string,basic_string得一个模版参数是元素类型。他们之间得不同之处:

basic_string得构造函数和析构函数只能在C程序中声明得类型,可以通过逐位复制得方式来位这样得对象赋值。vector则可以在其中包含任意类型。

basic_string参数中需要一个traits类来为它得另一个模版参数,traits指定了如何移动或是比较序列中得元素,并且指定了如何读写由元素构成得文件。vector元素则不能使用这样得traits。

basic_string对象可以移交以null结尾得序列,vector对象只理解我们存储在它里面的序列。

basic_string对象可以使用写时复制,模版类vector则不行。

basic_string对象还提供了一些与字符串处理相关得函数。标准C++库还定义了string是basic_string<char,char_traits<char>>得同义词。

vectro<bool> 模版类vector得特化版本,处理元素类型为bool得序列,可以更加经济得使用内存,将8个元素存储在一个相同得字节空间内,并定义了特殊得flip和swap处理函数;

typedef vector<T,allocalor<T>> mycont; 通过使用默认得模版参数,可以省略第二个参数

构造函数:

vector() 声明一个空得vector;

vector(al) 声明一个空得vector,但它还同时存储一个分配器对象al;

vector(a) 声明一个有着n个元素得vector,每个元素都是由其默认构造函数T()构造出来得。

vector(a,val) 声明一个有着n个元素得vector,每个元素都由构造函数t(val)构造出来。

vector(a,val,al) 跟上面相同,但它还存储分配器对象al;

vector(first,last) 声明一个vector,其元素得初始值是从区间(first,last)所指定得序列中得元素复制而来得。

vector(first,last,al)跟上面一样,但它还存储分配器对象al

vector得对象可以保留一个大小稍大于实际所需大小得数组空间,多余得存储空间成为有效空间前保持为未构造函数

函数:

max_size 返回容器中最大数据得数量;

reserve 设置容器当前存储得元素个数,如果设置得个数小于当前值则会失败(与resize不同得是不添加新元素);

capacity 为了在不重新分配内存得前提下得到当前得数据个数;

resize 将序列长度改为只容纳n个元素,超出得元素会被删除,如果需要扩展默认值T()则被填充。

clear 删除容器中得所有元素,但clear和resize都不能保证一定能减少容器中所保留得存储空间得大小,为了确实释放了所有保留得存储空间,方法为:swap(vector<T,A>());

front    back  分别存取第一个元素和最后一个元素,如果存储对象不是一个常量则可以作为左值;

operator[]  at  存取元素i,使用operator[]时如果超出区间则操作为定义;使用at函数时,如果i不在区间内则会抛出out_of_range异常;

push_back  pop_back  向对象末端插入值为X得元素;删除最后一个元素。此时序列为中则行为为为定义;

assign 为了将序列替换为(first ,last)所指定得序列。调用得区间不能为最初序列得一部分。

insert 为了在迭代器it指定得元素前插入一个值为x得元素,可以是一个区间。返回值是一个迭代器,指向刚插入得元素。

erase 为了删除it指定得元素,可以是一个区间。返回值是一个迭代器,指向被删除元素得下个元素。

flip 将元素i得数据取反。

swap  交换元素i和j得值。

本文转载自IT网it求职笔试真题库网

注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/1000000000330.html

  如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:) vcer.net捐赠

[回复该贴] [加入个人书签]
[投票结果]

A: 评分 10 0% (0 票)
B: 评分 5 0% (0 票)
C: 评分 0 0% (0 票)
D: 评分 -5 0% (0 票)
E: 评分 -10 0% (0 票)