博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL::vector讲解
阅读量:7070 次
发布时间:2019-06-28

本文共 2037 字,大约阅读时间需要 6 分钟。

hot3.png

一、概述

 

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。

 

例如:

 

// c语言风格

int myHouse[100] ;

 

// 采用vector

vector<int> vecMyHouse(100); 

 

当如上定义后,vecMyHouse就可以存放100个int型的数据了。

 

1. 它可以像普通数组一样访问

 

eg:  vecMyHouse[50] = 1024;

 

2. 你可以顺序地向容器中填充数据

 

eg:int i =0 ; 

     for( ;i< 25; i++ )

     {

            vecMyHouse.push_back(i);

     }

         

3. 它还可以动态地改变它的大小,通过下面这条语句实现

 

// 将容器的大小改为400,这样容器中就可以容纳400个int型数据了

eg: vecMyHouse.resize(400);

 

4. 你也可以在容器中装入自定义的数据类型

 

eg:

 

// 自定义一个class

class Cmyclass

{

};

 

// 定义一个存放class的容器

vector<Cmyclass> vecMyHouse; 

 

 

5. 你可以在定义容器时为它赋初值

 

// 定义一个容纳100个int型数据的容器,初值赋为0

vector<int> vecMyHouse(100,0); 

 

6. 你可以把一个容器的对象赋值给另外一个容器

 

eg:

 

// 定义一个容纳100个int型数据的容器,初值赋为0

vector<int> vecMyHouse(100,0); 

 

//    定义一个新的容器,内容与上述容器一样

vector<int> myVec ;

myVec = vecMyHouse;

 

 

二、 以上是vector容器的简单介绍,下面将详细介绍它的其他功能:

 

1. 为了使用vector,必须在你的头文件中包含下面的代码:

#include <vector>

 

2. vector属于std命名域的,因此需要通过命名限定,可以在文件开头加上

using std::vector;

或者

using namespace std;

或者直接在使用vector的代码前加前缀

eg: 

std::vector<int> myHouse;

 

3. vector提供如下函数或操作:

 

下面列举了部分常用的功能

 

// 定义一个vector

std::vector<int> c;

 

// 可以使用的功能

c.clear()                   移除容器中所有数据。

c.empty()                 判断容器是否为空。

c.erase(pos)             删除pos位置的数据

c.erase(beg,end)       删除[beg,end)区间的数据

c.front()                  传回第一个数据。

c.insert(pos,elem)      在pos位置插入一个elem拷贝

c.pop_back()            删除最后一个数据。

c.push_back(elem)     在尾部加入一个数据。

c.resize(num)            重新设置该容器的大小

c.size()                    回容器中实际数据的个数。

c.begin()                  返回指向容器第一个元素的迭代器

c.end()                    返回指向容器最后一个元素的迭代器

 

三、下面描述一下什么是迭代器

 

迭代器相当于指针,例如:

 

// 对于变量而言,使用指针指向对应的变量

// 以后就可以使用 * 加指针来操作该变量了

int a = 10;

int *p;

p = &a;

 

// 使用指针操作该变量

eg: *p = 11; // 操作后a变为 11

 

// 对于容器,使用迭代器操作容器中对应位置的值

// 当迭代器指向了容器中的某位置,则可以使用 * 加迭代器操作该位置了

 

// 定义一个vector

std::vector<int> myVec;

 

//添加10个元素

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

{

  myVec.push_back(j);

}

 

// 定义一个迭代器

std::vector<int>::iterator p;

 

// 指向容器的首个元素

p = myVec.begin();

 

// 移动到下一个元素

p ++;

 

// 修改该元素赋值

*p = 20 ;    //< 则myVec容器中的第二个值被修改为了20

 

// 循环扫描迭代器,改变所有的值

p = myVec.begin();

 

for( ; p!= myVec.end(); p++ )

{

    *p = 50;

}

 

以上简单讲述了vector的用法,仅供入门之用。

 

结束语

 

免费学习更多精品课程,登录乐搏学院官网

或关注我们的官方微博,还有更多惊喜哦~

 

本文出自 “” 博客,请务必保留此出处

转载于:https://my.oschina.net/learnbo/blog/801965

你可能感兴趣的文章
【Python】爬取理想论坛单帖爬虫
查看>>
php实现 24点游戏算法
查看>>
学习ASP.NET Core Razor 编程系列十七——分组
查看>>
酷壳网陈皓:开发者实用学习资源汇总
查看>>
CAS Maven
查看>>
杭电1018 Big Number
查看>>
使用PL/SQL Developer进行DEBUG时Step into会直接跳过procedure
查看>>
给开发人员的一份惊喜:IIS/.Net/SQL Server全系列全平台全自动安装工具!
查看>>
【转贴】应用服务器内存泄露问题诊断一例
查看>>
应用系统中常见报表类型解析
查看>>
内核通知链 学习笔记 【转】
查看>>
搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)...
查看>>
iOS开发-二维码扫描和应用跳转
查看>>
Docker生产实践(六)
查看>>
nobr 不换行标签
查看>>
fastJson设置接口只接受json格式数据
查看>>
linux 笔试题
查看>>
java json 解析
查看>>
Eclipse 启动时提示“发现了以元素'd:skin'开头的无效内容,此处不应含有子元素“...
查看>>
#!/bin/bash
查看>>