C++标准库vector以及迭代器

今天看C++的书,出现了一个新的概念,容器vector以及容器迭代器。

vector是同一种对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库将负责管理与存储元素相关的类存。引入头文件

#include<vector>

1.vector对象的定义和初始化

1 vector<T> v1             vector保存类型为T的对象。默认构造函数,v1为空
2 vector<T> v2(v1)         v2是v1的一个副本
3 vector<T> v3(n,i)        v3包含n个值为i的元素
4 vector<T> v4(n)          v4含有值初始化的元素的n个副本

如果没有指定元素的初始化式,那么标准库将自行提供一个元素初始值进行值初始化。这个由库生成的初始值将用来初始化容器中的每个元素,具体的值为何,取决于存储在vector中元素的数据类型。

如果vector保存内置类型如int,那么标准库将用0值创建元素初始化式

vector<int> vv(10);      //10个元素,每个被初始化为0

如果vector保存的是含有构造函数的类类型的元素,标准库将用该类型的默认的构造函数创建元素的初始化式

vector<string> vvvv(10)      //10个元素,每个被初始化为空字符串

还有第三种情况,元素类型可能是没有定义构造函数的类类型。这种情况下,标准库仍产生一个带初始值的对象,这个对象的每个成员进行了值初始化。

2.vector对象的操作

几种重要的操作

1 v.empty()               如果v为空,则返回true,否则返回false
2 v.size()                返回v中元素的个数
3 v.push_back()           在v的末尾增加一个值为t的元素
4 v[n]                    返回v中位置为n的元素
5 v1=v2                   把v1中的元素替换为v2中元素的副本
6 v1==v2                  如果v1与v2相等,则返回true
7 !=,<,<=,>,>=            保持这些操作符惯有含义

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++标准库vector以及迭代器

时间: 2024-08-01 10:20:53

C++标准库vector以及迭代器的相关文章

把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 相关的内存,因为vetcor是类模版,对应多个不同类型,比如int,string,或者自己定义的数据类型等. 程序开头应如下声明 #include <iostream> #include <vector> #include <string> using std::strin

C++标准库vector及迭代器

vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vector对象的定义和初始化 [cpp] view plain copy vector<T> v1             vector保存类型为T的对象.默认构造函数,v1为空 vector<T> v2(v1)         v2是v1的一个副本 vector<T> v3(n,

C++ 标准库值操作迭代器的常见函数

迭代器是C++标准库中的重要组件,特别是在容器内部,没有迭代器,容器也就无所谓存在了. 例如:vector容器简而言之就是3个迭代器 start finish 以及end_of_storage vector的任何操作都离不开这3个迭代器.. 接下来,总结一下C++ 中的迭代器的操作. C++的迭代器分为5类,依次为 : Input_iterator, output_iterator, forwrd_iterator, bidirectional_iterator 以及  random_acces

【转】C++ 标准库值操作迭代器的常见函数

迭代器是C++标准库中的重要组件,特别是在容器内部,没有迭代器,容器也就无所谓存在了. 例如:vector容器简而言之就是3个迭代器 start finish 以及end_of_storage vector的任何操作都离不开这3个迭代器.. 接下来,总结一下C++ 中的迭代器的操作. C++的迭代器分为5类,依次为 : Input_iterator, output_iterator, forwrd_iterator, bidirectional_iterator 以及  random_acces

C++标准库vector类型的使用和操作总结

vector是一种类型对象的集合,它是一种顺序容器,容器中的所有对象必须都是同一种类型.vector的对象是可以动态生长的,这说明它在初始化时可以不用指定大小,而是再使用时根据元素所需的空间动态增长.C++中还有一种常见的类型string,它和vector有很多相似之处,具体可以看<C++标准库string类型的使用和操作总结>这篇博文.下面简单介绍一下vector容器的使用和操作. 一.声明和初始化 使用vector之前必须在程序前的库包含中包含相应的头文件,如下: #include<

C++温习-标准库-vector

vector是C++中最基本的顺序容器,可把它看作是一个自动可变长度的数组来使用,使用中,比直接定义数组来使用方便,但运行效率会比数组低一些. vector的内部实现,还是数组的形式,当新插入数据使得大于容量时,就会进行重新分配空间,并移动数据,vector并不是每次插入新的数据都重新分配空间,并且移动数据,毕竟这样的效率太低了,通常,它是会新开一个大一些的空间,来避免过于频繁的分配空间和移动数据. vector 当然也是类模板. template < class T, class Alloc

C++标准库vector使用(更新中...)

内容: vector() //构造函数 1.vector构造函数 default (1) explicit vector (const allocator_type& alloc = allocator_type());//默认情况下 vector<int> vec; fill (2) explicit vector (size_type n);//只给定vector的大小 vector<int> first(10); vector (size_type n, const

C++学习笔记--标准库 vector

1 在应用vector时,要加入"using std::vector;"语句 2 对象的定义与初始化 在应用的时候,先建立一个空变量,然后再动态得增加其中的内容,这种调用方式更加的高效. 3 对象操作 vector<char> v1; (1)v1.empty();//如果v1为空,则返回1. (2)v1.pushback('a');//在v1变量中加入一个'a'的字符. (3)v1.size();//返回v1变量中元素的个数. (4)v1[0];//表示v1中的第1个元素.

C++拾遗(二)——初窥标准库类型

本篇博文的开始,先介绍一道书上看到的智力题:有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸.有一台称重精准的天平,只是用一次天平的情况下如何找出比较重的那瓶药丸? 好了,直接公布答案.从药瓶#1取出一粒药丸,从药瓶#2取出两粒,从药瓶#3取出三粒,依此类推.如果每粒药丸均重1克,则称得总重量为210克(1 + 2 + … + 20 = 20 * 21 / 2 = 210),“多出来的”重量必定来自每粒多0.1克的药丸.药瓶的编号可由算式(weight - 210 gr