Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7688152
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: C/C++

2011-08-11 23:41:56

参考《C++Primer4th第四版中文版》

 

vector 是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。

string 对象一样,标准库将负责管理与存储元素相关的内存。

我们把 vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。

 

使用 vector 之前,必须包含相应的头文件

    #include

    using std::vector;

vector 是一个类模板(class template)。使用模板可以编写一个类定义或函数定义,而用于多个不同的数据类型。因此,我们可以定义保存 string 对象的 vector,或保存 int 值的 vector,又或是保存自定义的类类型对象(Sales_items 对象) vector

vector 不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。vector 类型的每一种都指定了其保存元素的类型

 

初始化 vector

vector<T> v1; vector 保存类型为 T 对象。默认构造函数 v1 为空。

vector<T> v2(v1); v2 v1 的一个副本。

vector<T> v3(n, i); v3 包含 n 个值为 i 的元素。

vector<T> v4(n);  v4 含有值初始化的元素的 n 个副本。

 

 

vector 对象的操作

v.size()       返回 v 中元素的个数。

v.empty()      如果 v 为空,则返回 true,否则返回 false

v.push_back(t) v 的末尾增加一个值为 t 的元素。

v[n]           返回 v 中位置为 n 的元素。

v1 = v2    v1 的元素替换为 v2 中元素的副本。

v1 == v2   如果 v1 v2 相等,则返回 true

!=, <, <=,>, and >=  保持这些操作符惯有的含义。

 

/*

 * vector 对象的操作

 * 对象的 size

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main(void)

{

    vector<int> ivec(10,0); //创建对象初始化值为0,共有10个元素

    cout<<ivec.size()<<endl;

    return 0;

}

 

/*

 * vector 对象的操作

 * vector 添加元素

 * push_back 操作接受一个元素值,并将它作为一个新的元素添加到 vector对象的后面,

 * 也就是“插入(push)”到 vector 对象的“后面(back):*

 * Lzy 2011-8-11

 */

 

#include

#include

#include

using namespace std;

 

int main(void) {

    string word;

    vector<string> text;

 

    while (cin >> word)

        text.push_back(word);

 

    return 0;

}

 

/*

 * vector 对象的操作

 * vector 的下标操作

 * ector 的下标操作符接受一个值,并返回 vector 中该对应位置的元素。

 * vector 元素的位置从 0 开始

 * Lzy 2011-8-11

 */

 

#include

#include

#include

using namespace std;

 

int main(void) {

    vector<int> ivec;

    for (int i = 0; i < 10; i++)

        ivec.push_back(i);

    for (vector<int>::size_type x = 0; x != ivec.size(); x++)

        cout << ivec[x] << "\t";

    cout << endl;

 

    return 0;

}

 

 

迭代器简介

除了使用下标来访问 vector 对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器(iterator)。迭代器是一种检查容器内元素并遍历元素的数据类型。

容器的 iterator 类型

每种容器类型都定义了自己的迭代器类型, vector:

vector<int>::iterator iter;

 

/*

 * 迭代器应用的程序示例

 * Lzy 2011-8-11

 */

 

#include

#include

#include

using namespace std;

 

int main(void) {

    vector<int> ivec;

    for (int i = 0; i < 10; i++)

        ivec.push_back(i);

    vector<int>::iterator iter; //定义一个迭代器名为 iter 的变量

    //vector::const_iterator iter; // const_iterator 类型解引用时,则可以得到一个指向 const 对象的引用

    for (iter = ivec.begin(); iter != ivec.end(); iter++)

        cout << *iter << "\t";

    cout << endl;

 

    return 0;

}

 

阅读(2135) | 评论(0) | 转发(1) |
0

上一篇:标准库 string 类型

下一篇:标准库 bitset

给主人留下些什么吧!~~