关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍。

vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插入元素,简单而高效,能够完全替代数组。

vector最大的亮点在于具有内存自动管理的功能,插入和删除元素时能够动态调整所占的内存空间。

值得注意的是,vector容器中的两个重要方法,begin()返回的是首元素位置的迭代器,end()返回的是最后一个元素的下一个元素位置的迭代器。

//关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,不过看别人的代码一百遍,不如自己动手写一遍

#include //头文件

#include

#include

using namespace std;

void print(vector v);

bool mycmpare(const int &a, const int &b){

return a>b;

}

int main ()

{

//创建vector对象三种常用的方式,此处存储元素类型是int,还可以是double、char、long long等基本数据类型,甚至是string基本字符序列容器

vector v1;//不指定容器的元素个数的定义一个用来存储整型的向量容器

cout<

print(v1);

/*运行结果

v1:

大小为:0

*/

vector v2();//指定容器的元素个数的定义一个大小为10的用来存储整型的向量容器,默认初始化为0

cout<

print(v2);

/*运行结果

v2:

大小为:5

0 0 0 0 0

*/

vector v3(,);//也可指定初始值,此处指定为1

cout<

print(v3);

/*运行结果

v3:

大小为:5

1 1 1 1 1

*/

//另外事先指定不指定大小都无所谓,指定了大小也可以随时使用push_back()对vector容器进行尾部扩张

v1.push_back();//向空的vector容器尾部扩张,追加元素为1

cout<

print(v1);

v3.push_back();//向已有元素的vector容器尾部扩张,追加元素为2

cout<

print(v3);

/*运行结果

v1:

大小为:1

1

v3:

大小为:6

1 1 1 1 1 2

*/

//插入元素使用insert()方法,要求插入的位置是迭代器的位置,而不是元素的下标

v3.insert(v3.begin(),);//在最前面插入3

cout<

print(v3);

v3.insert(v3.end(),);//在末尾追加3,此处等同于push_back()

cout<

print(v3);

/*运行结果

v3:

大小为:7

3 1 1 1 1 1 2

v3:

大小为:8

3 1 1 1 1 1 2 3

*/

int i;

for(i=;i < v3.size();i++){//只可赋值到已扩张位置

v3[i]=i;

}

//要删除一个元素或者一个区间中的所有元素时使用erase()方法

v3.erase(v3.begin()+);//删除第2个元素,从0开始计数

cout<

print(v3);

/*运行结果

v3:

大小为:7

0 1 3 4 5 6 7

*/

v3.erase(v3.begin()+,v3.begin()+);//删除第1个到第3个元素区间的所有元素

cout<

print(v3);

/*运行结果

v3:

大小为:5

0 4 5 6 7

*/

//由结果可知,erase()方法同insert()方法一样,操作的位置都只是迭代器的位置,而不是元素的下标

//要想清空vector(),使用clear()方法一次性删除vector中的所有元素

cout<

print(v2);

/*运行结果

v2:

大小为:5

0 0 0 0 0

*/

v2.clear();

if(v2.empty()) cout<

print(v2);

/*运行结果

v2经过使用clear()方法后为空

大小为:0

*/

//要想将向量中某段迭代器区间元素反向排列,则使用reverse()反向排列算法,需要添加algorithm头文件

cout<

print(v3);

reverse(v3.begin(),v3.end());//全部反向排列

cout<

print(v3);

/*运行结果

v3反向排列前:

大小为:5

0 4 5 6 7

v3反向排列后:

大小为:5

7 6 5 4 0

*/

//要想将向量中某段迭代器区间元素进行排序,则使用sort()算法

cout<

print(v3);

sort(v3.begin(),v3.end());//默认升序排列

cout<

print(v3);

/*运行结果

v3升序排列前:

大小为:5

7 6 5 4 0

v3升序排列后:

大小为:5

0 4 5 6 7

*/

//自定义排序比较函数,此处降序

cout<

print(v3);

sort(v3.begin(),v3.end(),mycmpare);

cout<

print(v3);

/*运行结果

v3降序排列前:

大小为:5

0 4 5 6 7

v3降序排列后:

大小为:5

7 6 5 4 0

*/

}

void print(vector v)

{

//cout<

cout<

int i;

for(i=;i< v.size();i++){

cout<

}

cout<

/*cout<

//定义迭代器变量it,类型与容器元素类型保持一致

vector::iterator it;

for(it=v.begin(); it != v.end(); it++){

cout<

}

cout<

}

学习笔记之vector向量容器

今天复习到vector向量容器,里面包括vector向量容器的一些优点以及具体的使用方法及代码,分享给大家. Vector向量容器不但能够像数组一样对元素进行随机访问,还可以在尾部插入元素,是一种简单 ...

vector向量容器

vector向量容器不但可以像数组一样对元素进行随机访问,还能在尾部插入元素,是一种简单高效的容器,可以代替数组. vector具有内存自动管理的功能,对于元素的插入和删除,可以动态的调整所占内存. ...

标准模板库使用参考——vector向量容器

C++的STL从广义上讲分为algorithm(算法),container(容器)和iterator(迭代器)三类,包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法. 在C++标准库中,ST ...

C&plus;&plus;STL之vector向量容器

vector向量容器   vector向量容器不但能向数组一样对元素进行随机访问, 还能在尾部插入元素 vector具有内存自动管理的功能, 对于元素的插入和删除, 可动态调整所占的内存空间 vect ...

vector向量容器元素排序与查找

1.利用标准库函数sort()对vector进行排序 参考源码: #include #include vector

vector 向量容器用法祥解

vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法:         ...

利用copy函数简单快速输出&sol;保存vector向量容器中的数据

如果要输出vector中的数据我们可以通过循环语句输出,更加简便的方法是利用copy函数直接输出,例子: #include "stdafx.h" #include

C&plus;&plus; STL vector&lpar;向量容器&rpar;的使用(附完整程序代码)

一.简单介绍 Vectors 包括着一系列连续存储的元素,其行为和数组类似. 訪问Vector中的随意元素或从末尾加入元素都能够在O(1)内完毕,而查找特定值的元素所处的位置或是在Vector中插入元 ...

1&period;Vector&lpar;向量容器&rpar;

一.概述 Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入 ...

随机推荐

Log4j配置详解&lpar;转&rpar;

一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

从零开始学 Java - CentOS 安装 JDK

我来总结一下吧 昨天我写了一篇从零开始学 Java - 我放弃了 .NET ?,在园子里突然引起了强烈的讨论,有期待我能持续更新的.有鼓励支持的.有相同经历的.也有同一个学校的师兄弟(我们相认了).当 ...

Leetcode Permutations

Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...

HDU 3951 &lpar;博弈&rpar; Coin Game

先考虑两种简单的情况: 如果先手能一次把硬币拿完,即 k >= n ,那么先手胜 如果每次只能拿一个硬币, 即 k = 1 ,那么如果有奇数个硬币先手胜,如果有偶数个硬币后手胜. 剩下的情况就是 ...

学习动态性能表 v&dollar;sql

学习动态性能表 第三篇-(1)-v$sql V$SQL中存储具体的SQL语句. 一条语句可以映射多个cursor,因为对象所指的cursor可以有不同用户(如例1).如果有多个cursor(子游标)存 ...

Android开源项目发现--- 工具类数据库ORM篇(持续更新)

orm的db工具类,简化建表.查询.更新.插入.事务.索引的操作 1. greenDAO Android Sqlite orm的db工具类 项目地址:https://github.com/greenr ...

bootstrap 更改container 的width

参考:http://stackoverflow.com/questions/15884102/bootstrap-how-do-i-change-the-width-of-the-container ...

非交互式一句话添加root用户

useradd -p `openssl passwd -1 -salt ‘lsof’ admin123` -u 0 -o -g root -G root -s /bin/bash -d /usr/bi ...

Geany的&quot&semi;跳转到标记定义&OpenCurlyDoubleQuote;功能如何使用

Geany是个比较轻量级的代码编辑器,在一些不怎么需要编辑的代码上,我比较常用它来浏览代码.不过它的 跳转到标记定义(Go to tag definition) 功能有点奇怪,一开始死活不知道怎么用, ...

java中vector容器,vector向量容器(常用的使用方法总结)相关推荐

  1. java sleep唤醒_详解Java中的线程让步yield()与线程休眠sleep()方法

    Java中的线程让步会让线程让出优先级,而休眠则会让线程进入阻塞状态等待被唤醒,这里我们对比线程等待的wait()方法,来详解Java中的线程让步yield()与线程休眠sleep()方法 线程让步: ...

  2. java中char类型转换成int类型的两种方法

    java中char类型转换成int类型的两种方法 方法一: 第一种利用Integer包装类的方法Integer.parseInt Copychar ch = '9'; if (Character.is ...

  3. java类名可以是数字吗_在 Java 中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为( )。_学小易找答案...

    [简答题]Java 支持多继承吗 ? [单选题]以下关于继承的叙述正确的是( ). [单选题]在 Java 中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数.类型或顺序各不相同,传回的值也 ...

  4. java中contains的用法_java容器中所有接口和类的用法

    我这里讲一下如何下载java的api文档 还有就是容器和容器之间进行的操作 每一个地方称之为一个节点,每一个节点包含了3部分(上一个节点,下一个节点,以及我们自己的数据部分) 需要多个线程共享的时候 ...

  5. java 中counter什么意思_java容器中的几种计数方法浅谈

    本文讨论java集合容器中的几种元素数量获取的方式,命题很小,但是也足以让我们思考一些东西. 所谓计数:即是给出所在容器的元素总数的方式.一般能想到的就是两种方式:一是使用某个字段直接存储该计数值,二 ...

  6. Java中常见的集合框架及常用的方法

    本篇文章主要说明Java中一些常见的集合框架及经常用到的一些方法 , 由于都是一些父类 , 所以没有做太深入的分析说明 , 后面的文章将会分别对List , Set , Map及其常用子类进行深入研究 ...

  7. java中二进制怎么说_面试常用:说清楚Java中synchronized和volatile的区别

    回顾一下两个关键字:synchronized和volatile 1.Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized.v ...

  8. Java 中发生内存泄漏 5 个场景以及解决方法

    前言 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和 Java 联系起来.在 Java 中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM ...

  9. Java SE有几个代码_JavaSE常用类及方法的介绍(附代码)

    本篇文章给大家带来的内容是关于JavaSE常用类及方法的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.基本数据类型比较用:== 2.引用数据类型比较用:equal ...

  10. java中Object类的hashCode和equals及toString方法。

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

最新文章

  1. NIO 拷贝文件真的比 IO 效率高 ?
  2. python watchdog 同时检测到多个事件_python中watchdog文件监控与检测上传功能
  3. jquery-uploadifyv3.2.1 文件上传插件 学习
  4. 定位到某个单词_【侃侃单词】词根词缀记单词-loc
  5. 利用DBMS_ADVISOR.TUNE_MVIEW包生成物化视图创建语句
  6. JDBC入门案例及相关API概述
  7. Context是怎么在Go语言中发挥关键作用的
  8. Literal Web 服务器控件
  9. 对PostgreSQL xmin的深入学习
  10. 学术之路如何走好?过来人的10条建议!
  11. 按钮、菜单的重绘代码
  12. linux内存测试工具memtest,linux内存测试工具memtester使用
  13. 音乐推荐系统参考资料
  14. 分享5款2022年最好用的windows软件
  15. 进程的创建——fork函数
  16. 科来网络分析系统2010v7.3.1.2436 激活注册汉化方法
  17. Pyinstaller 打包exe运行时找不到源码,函数 错误 OSError: could not get source code
  18. Frame-Pannel-Button综合
  19. 夜神模拟器4K模拟配置
  20. PDF/OCR识别提取工具:Readiris Pro 17 for Mac

热门文章

  1. Java的String.format可以静态导入
  2. SpringBoot AutoConfiguration魔术如何工作?
  3. JavaFX缺少的功能调查:表视图
  4. Java TDD简介–第1部分
  5. 2015年Devoxx比利时–最后的想法
  6. 策略模式应用场景和uml_策略模式
  7. 常见的误解:这会创建多少个对象?
  8. 在Java中调用祖父母方法:您不能
  9. 与Java EE和Camel的轻量级集成
  10. Orika:将JAXB对象映射到业务/域对象