设为首页收藏本站

编程十万个为什么,属于程序员的编程论坛

 找回密码
 5秒快速注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 547|回复: 0

[原创] c++零基础快速入门教程--[标准库类型vector]

[复制链接]
发表于 2016-10-4 14:20:19 | 显示全部楼层 |阅读模式
标准库类型vector
标准库类型vecrot表示对象的集合,其中所所有对象的类型都相同。集合中的每隔对象都有一个与之相应的索引,索引用于访问对象。在使用vector之前,必须要包含头文件。#include<vector>
定义和初始化vector对象
       vector<T>v1               //默认初始化,v1不包含任何元素
       vector<T>v2(v1)           //v2中包含有v1所有元素副本
       vector<T>v2 = v1              //等价于v2(v1),v2中包含有v1所有元素的副本
       vector<T>v3(n, i)        //v3包含n个值为i的元素
       vector<T>v4(n)           //v4含有初始化的元素的n个副本
如果没有指定元素初始化,那么标准库将自行提供一个元素初始化进行初始化。这个由库生成的初始值将用来初始化容器中的每个元素,具体的值为什么,取决于存储在vector中元素的数据类型。
       C++11新标准还提供了一种为vector对象的元素赋初值的方法,即列表初始化。
       vector<T>v5 = {“a”, “an”, “the”};

01.png
向vector对象中添加元素

02.png
                              
访问vector对象中元素的方法和访问string对象中字符的方法差不多,也是通过元素在vector对象中的位置。
Vector的empty和size两个成员与string的同名成员功能完全一致:empty检查vector对象是否包好元素后返回一个布尔值;size则返回vector对象中元素的个数,返回值的类型是有vector定义的size_type类型。
03.png
使用迭代器
       和指针不一样的是,获取迭代器不是使用取地址符,有迭代器的类型同时拥有返回迭代器的成员。如,这些类型都拥有名为begin和end成员,其中begin成员负责返回指向第一个元素的迭代器。end成员则负责返回指向容器(或string)“尾元素的下一个位置”元素。
       如果容器为空,则begin和end返回的是同一个迭代器,都是尾后迭代器。

04.png

下面程序中利用下表运算符把string对象的第一个字母改成大写形式。

05.png

将迭代器从一个元素移动到另一个元素

06.png

迭代器类型
       就像不知道string和vector的size_type成员到底是什么类型一样,一般来说我们也不知道(其实是无须直到)迭代器的精确类型。而实际上,那些拥有迭代器的标准库类型使用iterator和const_iterator来表示迭代器的类型:
       vector<int>::iteratorit;        //it能读写vector<int>的元素
       string::iteratorit2;                //it2能读写string对象中的字符
vector<int>::const_iteratorit3;           //it3只能读元素,不能写元素
string::const_iteratorit4;                    //it4只能读元素,不能写元素
const_iterator和常量指针差不多,能读取但不能修改它所指的元素指。相反,iterator的对象可读可写。
结合解引用和成员访问操作
       解引用迭代器可获得迭代器所指的对象,如果该对象的类型恰好是类,就有可能希望进一步访问它的成员。

您需要登录后才可以回帖 登录 | 5秒快速注册

本版积分规则

关闭

BcWhy推荐上一条 /1 下一条

QQ|关于我们|最新帖子|小黑屋|手机版|编程十万个为什么 ( 粤ICP备16108587号-2  

GMT+8, 2017-1-19 21:04 , Processed in 0.182253 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表