关于C++的vector的实例学习

一、简介

我们在学习C++的过程中,学到STL是必然的,那么STL的入门就是vector了。

vector是同一种类型的对象的集合,vector很像数组,空间是连续的,能非常高效和方便的访问单个元素,但是它支持动态增加和压缩数据,所以这是矛盾的,这个问题,我们会在后期的STL源码的分析中来讲解vector的内部实现。

vector 是一个类模板(class template)。使用模板可以编写一个类定义或函数定义,而用于多个不同的数据类型。

vector需要的头文件是

#include <vector>

using std::vector

-------------------------------------------------------------------

二、 定义和初始化

vector< T>   v; //默认为空,例如     vector<int>   v;

vector<T>  v2(v);   或v2=v1;

vector<T> v2(v1.begin(), v1.end());//v2是v1的一个副本,  若v1.size()>v2.size()则赋值后v2.size()被扩充为v1.size()。

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

vector< T > v4(n); //v4含有n个值为0的元素

int a[4]={0,1,2,3,3}; vector<int> v5(a,a+5);

//v5的size为5,v5被初始化为a的5个值。后一个指针要指向将被拷贝的末元素的下一位置。

vector<int> v6(v5);//v6是v5的拷贝

vector< 类型 > 标识符(最大容量,初始所有值);

-------------------------------------------------------------------

三、vector常用成员函数:

size()                   :返回元素的个数

clear()                 :清除所有元素

empty()               :判断是否为空

push_back()      :在末尾添加一个元素

pop_back()       :删除最后一个元素

erase()              :删除某个元素

insert()               :插入一个元素

[]                        :返回元素

=                        :复制副本

重载运算符:[]、=、<=、>=、>、<、!=、==、

-------------------------------------------------------------------

四、实例代码学习:

# include <iostream>
# include <vector>
# include <algorithm>
using namespace std;

typedef vector<int>  INTVEC;

/*
vector‘s display function
void ShowVec(const INTVEC&  v)
{
	unsigned int i = 0;
	for(i = 0; i < v.size(); ++i)
	{
		cout << v[i] << "    ";
	}

	cout << endl;
}

*/
//利用迭代器进行显示
void   ShowVec(const    INTVEC&    v)
{
            //*it不能赋值,不能改写内容
            INTVEC::const_iterator   it;
            //任何迭代器一般重载了不等号运算符        
            //for(it = v.begin();   it  < v.end();  ++it )    
            for(it = v.begin();   it  != v.end();  ++it )
            {
                    cout   <<  *it   <<  "    ";                
            }

            cout <<  endl << endl;            
}

int main(void)
{
	INTVEC   v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);

	cout << "Show current element : " ;
	ShowVec(v);
	cout << endl;

	cout << "print the last element:   "<<   v.back()  << endl; 	cout << endl;

	cout << "pop the last element!!!";
	v.pop_back();
	cout << endl << endl;

	cout << "Show current element : " ;
	ShowVec(v);

	cout << "erase element !!! ";
	v.erase(v.begin() + 2);           //移除一个元素  
	cout << endl;

	cout << "Show current element : " ;
	ShowVec(v);

	return 0;
}

-----------------------------------------------------------

运行结果:

-----------------------------------------------------------

最后补充一点关于迭代器的知识:

1、容器一般都支持迭代器操作

2、通过迭代器来遍历容器

3、string也可以理解为容器,只是通常当成字符串类

4、迭代器可以理解为容器的指针

5、迭代器可以理解泛型程序指针

6、vector<int>    等价为 int*

7、有些不是这样等价的

8、任何迭代器一般重载了不等号运算符

9、++运算符的重载

后置++多了一次临时对象的构造,效率低

前置++无临时对象的构造

-----------------------------------------------------------

关于C++的vector的实例学习,布布扣,bubuko.com

时间: 2024-08-26 16:40:36

关于C++的vector的实例学习的相关文章

cocos2d-x 3.0游戏实例学习笔记 《跑酷》第四步--地图循环&amp;主角添加动作

这一步当中,我们主要完成以下功能: 1.地图的无限滚动---让主角看起来真的是在跑动 2.给主角添加Jump跳跃和crouch下蹲动作 那么首先来让背景滚动起来,在PlayScene.h中添加: //初始化背景 void initBG(); //用update函数让地图滚动 virtual void update(float dt); //背景精灵 cocos2d::Sprite* bgSprite1; cocos2d::Sprite* bgSprite2; cocos2d::Sprite* g

cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第三步---主角开跑&amp;同时带着刚体

在这一步,我们主要是把主角加入到游戏场景中来,并且让它跑动,这里的跑动,实际上也就是执行一组动画,让其看起来像是在跑动,而且相对屏幕的位置也不会改变 我们会定义一个主角类:Runner,而这一步就要用到 帧动画 的创建和使用等知识点. 对于Runner,我的设计思路如下: 1.主角有一个动作集合,包括跑动,跳起来,以及蹲下.那么就有不同的帧动画,那么这里借鉴到 晓风残月前辈的方法,将帧动画打包命名,之后根据动作名来执行动作 2.主角需要绑定刚体,并且在不同的动作下的刚体大小不同 3.我们给主角设

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

初译 Support Vector Machines:A Simple Tutorial(一)

从本次开始我将开始尝试着逐章翻译一下 Alexey Nefedov的<Support Vector Machines:A Simple Tutorial>这本教材,这可是我们导师极力推荐的SVM教材,看了好久一直感觉一脸懵逼,索性开坑翻译一下吧,也当是加深理解,毕竟我也是一知半解,如果翻译的有不对的地方还望大佬们斧正,欢迎提意见,欢迎讨论. 嗯,就是这样. (一)Introduction 在本章节中将会介绍一些用于定义支持向量机(SVM)的基础的概念,这些概念对于理解SVM至关重要,假定读者了

Vector容器 和 iteration 迭代器

vector容器 vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库负责管理存储元素的相关内存.我们把vector称为容器,是因为它可以包含其他对象.一个容器中的所有对象都必须是同一种类型的. 使用vector之前,必须包含相应的头文件.#include <vector> using std::vector; vector是一个类模板(class template).模板允许程序员编写单个类或函数定义,这个类和函数定义可用于不同的数据类型上.

C++ vector 使用

看vector 的使用: #include "stdafx.h" #include <iostream> #include <vector> using namespace std; int main() { vector<long> v; for (long i=0;i<10000;i++) { v.push_back(rand()); } cout << "size = " << v.size()

Vector Tile

Mapbox Vector Tile Specification A specification for encoding tiled vector data. <?XML:NAMESPACE PREFIX = "[default] http://www.w3.org/2000/svg" NS = "http://www.w3.org/2000/svg" />License The text of this specification is licens

vector,deque,list相关操作

1.vector的基本操作 (1).对动态数组元素的添加和删除.获取 代码如下: #include<iostream> #include<vector> using namespace std; //数组元素的添加和删除.获取 int main(void){     vector<int> v1;      v1.push_back(1);     v1.push_back(2);     v1.push_back(3);     cout<<"l

vector容器用法详解

vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组.像数组一样,vector类也用从0开始的下标表示元素的位置:但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化. vector类常用的函数如下所示: 1.构造函数 vector():创建一个空vector vector(int nSize):创建一个vector,元素个数为nSize vector(int nSize,const t& t):创建一个vector,元