C++ Primer 有感(标准库vector及迭代器)
2013-07-03 12:58
274 查看
vector是同一种对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库将负责管理与存储元素相关的类存。引入头文件
#include<vector>
如果没有指定元素的初始化式,那么标准库将自行提供一个元素初始值进行值初始化。这个由库生成的初始值将用来初始化容器中的每个元素,具体的值为何,取决于存储在vector中元素的数据类型。
如果vector保存内置类型如int,那么标准库将用0值创建元素初始化式
vector<int> vv(10); //10个元素,每个被初始化为0
如果vector保存的是含有构造函数的类类型的元素,标准库将用该类型的默认的构造函数创建元素的初始化式
vector<string> vvvv(10) //10个元素,每个被初始化为空字符串
还有第三种情况,元素类型可能是没有定义构造函数的类类型。这种情况下,标准库仍产生一个带初始值的对象,这个对象的每个成员进行了值初始化。
size()返回相应vector类定义的size_type的值。
vector::size_type //error
vector<int>::size_type //ok
push_back()函数将新元素添加到vector最后面。
vector<int> ::iterator iter;变量名为iter。
vector<int>::iterator iter=v.begin();
若v不为空,iter指向v[0]。
由end返回的迭代器指向最后一个元素的下一个,不存在,若v为空,begin和end返回的相同。
*iter=0;
iter++即将迭代器向前移动一个位置
即将v[0]赋值为0,由end返回的不允许进行解操作。
==和!=操作符来比较两个迭代器,若两个迭代器指向同一个元素,则它们相等,否则不想等。
迭代器使用举例:
for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++)
*iter=0;
将vector中的元素全部赋值为0;
#include<vector>
1.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中元素的数据类型。
如果vector保存内置类型如int,那么标准库将用0值创建元素初始化式
vector<int> vv(10); //10个元素,每个被初始化为0
如果vector保存的是含有构造函数的类类型的元素,标准库将用该类型的默认的构造函数创建元素的初始化式
vector<string> vvvv(10) //10个元素,每个被初始化为空字符串
还有第三种情况,元素类型可能是没有定义构造函数的类类型。这种情况下,标准库仍产生一个带初始值的对象,这个对象的每个成员进行了值初始化。
2.vector对象的操作
几种重要的操作v.empty() 如果v为空,则返回true,否则返回false v.size() 返回v中元素的个数 v.push_back() 在v的末尾增加一个值为t的元素 v 返回v中位置为n的元素 v1=v2 把v1中的元素替换为v2中元素的副本 v1==v2 如果v1与v2相等,则返回true !=,<,<=,>,>= 保持这些操作符惯有含义
size()返回相应vector类定义的size_type的值。
vector::size_type //error
vector<int>::size_type //ok
push_back()函数将新元素添加到vector最后面。
3.迭代器简介
除了使用下标来访问vector对象的元素外,标准库还提供了访问元素的方法:使用迭代器。迭代器是一种检查容器内元素并且遍历元素的数据类型。1.容器的iterator类型
每种容器类型都定义了自己的迭代器类型,如vector:vector<int> ::iterator iter;变量名为iter。
2.begin和end操作
每种容器都定义了一队命名为begin和end的函数,用于返回迭代器。如果容器中有元素的话,由begin返回的元素指向第一个元素。vector<int>::iterator iter=v.begin();
若v不为空,iter指向v[0]。
由end返回的迭代器指向最后一个元素的下一个,不存在,若v为空,begin和end返回的相同。
*iter=0;
iter++即将迭代器向前移动一个位置
即将v[0]赋值为0,由end返回的不允许进行解操作。
==和!=操作符来比较两个迭代器,若两个迭代器指向同一个元素,则它们相等,否则不想等。
迭代器使用举例:
for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++)
*iter=0;
将vector中的元素全部赋值为0;
相关文章推荐
- C++ Primer 有感(标准库vector及迭代器)
- C++ Primer 有感(标准库vector及迭代器)
- 把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)
- 《c++ primer》——2 标准库vector类型和迭代器iterator
- 1.string类2.标准库Vector类型3.迭代器
- C++ Primer 有感(标准库pair)
- C++ Primer 有感(标准库pair)
- 《C++ Primer》读书笔记第三章-2-标准库类型vector
- C++ Primer 有感(标准库pair)
- C++ Primer(第四版)笔记2 标准库vector类型
- C++ Primer 有感(标准库set类型)
- C++ Primer 有感(标准库set类型)
- 第三章 标准库string、vector、bitset类型 —— 第二节 vector类及其迭代器
- C++ Primer 有感(标准库set类型)
- C++ primer学习笔记 ——标准库类型vector
- C++ Primer_4th学习笔记(7)- 标准库 vector 类型
- 标准库容器 vector 和 迭代器 iterator 的简单介绍
- C++ Primer学习笔记7 标准库类型(标准库vector类型、迭代器简介)
- 标准库vector类型和迭代器iterator类型
- C++ Primer 有感(标准库类型)