c++vector中把remove和yum erase remove一起用与直接用yum erase remove有什么区别?

16:32 提问
关于vector的insert 、 erase、resize操作导致迭代器无效化
typedef vectorint_
int_vec v(2,0);
int_vec::iterator iter_b = v.begin();
v.insert(v.begin(),1);
cout&&*iter_b&&
//这种操作会导致iter_b无效,输出随机值
int_vec v1(2,0);
int_vec::iterator iter_b = v.begin();
v.erase(v.begin());
cout&&*iter_b&&
//却能正常输出当前vector内的第一个元素,求解释
如果insert和erase依次进行操作,事先初始化的迭代器也不会被无效化,求解释
按赞数排序
vector容器是先用allocator分配定量的内存,当vector插入某个数量的元素后超出了vector的容量,此时会重新用allocator申请更大容量的内存,将原来的元素拷贝到新的内存空间中,原来的内存空间就会被释放,那么原先定义的迭代器就失效了; 希望这点解释能帮助到你。
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐博客分类:
Erase flash,Erase NVRAM命令与

  Erase flash,Erase NVRAM命令与CISCO路由器灾难恢复技术
  胡 成
  (达县师范高等专科学校网管中心,四川达州635000)
  【摘要】简要介绍路由器的正常启动顺序,着重对加栽映像文件密切相关的配置寄存器值进行分析,
  得出“erase flash”和“erase nvram”两条命令均可导致路由器灾难性故障,并对灾难恢复技术做了较详细的
  阐述。
  【关键词】灾难恢复;eraSeflash;erase NVRAM;lOS;ROMMON模式;配置寄存器
  【中图分类号1TP332.1 l 【文献标识码】A 【文章编号】(37―04
  1 引言
  在校园网中,路由器往往用作边界设备,该设备一旦
  出现硬故障或系统瘫痪,整个校园网络就成了信息孤岛。
  这里要谈的灾难恢复技术是指路由器flash(flash memo~
  路由器的一个储存部件)中的lOS(互联网操作系统)不小
  心破坏了,而且路由器也没有其它方法从另外的地方加载
  lOS时;或者config―register值设置不当,指定位置找不到
  lOS加载,路由器便无法进入正常的工作状态,重启后也
  只能进入rolrlnlon l&模式,即ROMMON模式,犹如PC机
  中没有OS(操作系统)一样,成了裸机,这样的机器是没有
  任何价值可言的。erase flash是一条危险的命令,因为这
  加载引导程序 定位并加载操作系统
  第一步:执行ROM中的引导程序加载器(bootstrap
  loader)。引导程序(Bootstrap)是一个简单操作,根据事先
  的规定加载一组指令,这些指令又将其他的指令装入内存
  或者是使得路由器进入其他的配置模式。
  第二步:操作系统(CISCO lOS)可存放在很多地方
  (Flash、T兀P Server或者ROM)。具体位置是由配置寄存
  条命令足以使你的路由器或交换机成为裸机。但在实际
  工作中发现,copy running config/NVRAM(en璩e NVRAM)
  等命令同样可使你的路由器只能进入ROMMON模式,不
  能正常工作。通过分析研究,笔者认为只要对flash或
  NVRAM操作不当都可能导致路由器进入ROMMON模
  式。
  2 灾难与恢复
  以下对flash恶意修改的相关命令用erase flash代替;
  对NVRAM恶意修改的有关命令用eE嘲NVRAM代替。
  路由器的正常启动顺序:路由器自检之后,接着进行
  初始化,步骤如下(见图1)
  N、 ^M TFTP Server l 控制台l
  I 配置文件
  定位并加载配置文件或进入设置模式
  图1
  器(Configuration register)的启动域(boot field)指定的。如
  果启动域指明是从Flash或是网络(T兀P Server)加载
  lOS,那么在配置文件中boot system命令就具体指明了映
  像(image)的确切位置。 ??
  第三步:加载操作系统映像,映像加载并运行后,操作
  系统就开始查找硬件和软件部件并通过控制台终端(con-
  【收稿日期】2oo5__o5―16
  【作者简介】胡成(1975一),男,四川达县人,达县师范高等专科学校网管中心助理工程师,研究方向:计算机网络管
  理与维护。
  37
  2005年第5期 胡成:Erase flash,Erase NVRAM命令与CISCO路由器灾难恢复技术
  sole termina1)显示出查找的结果。
  第四步:将储存在NVRAM中的配置文件加载入主内
  存中,并以每次执行一行的方式运行。这些配置命令将启
  动路由进程为每个接口分配地址、设置介质特性等等。
  第五步:如果在NVRAM 中不存在有效的配置文件,
  操作系统将执行一个以问题为驱动(question―driven)的
  初始化配置过程,称为系统配置对话(system configuration
  dialog),也叫设置(setup)模式。设置模式只能进行最基
  本的配置。后使用各种配置模式下的命令完成大多数的
  路由配置任务。
  上述过程系路由器的正常启动顺序,当用了erase
  flash或erase NVRAM命令之后,路由器便无法进入正常
  的工作状态,重启后也只能进入ROMMON(ROMMON模
  式是ROM MONITOR的缩写)模式。erase flash命令的功
  能是擦除或清空flash memory。由路由器的启动顺序可
  知,使用了erase flash命令之后,无法从Flash中加载lOS。
  若T兀P Server中无备份IOS或其它原因找不到IOS,这时
  系统只能加载ROM中的最小映像,即ROMMON模式。那
  e/'aae NVRAM命令是怎么导致路由器进入ROMMON状态
  呢?这得分析路由器寄存器与加载IOS的关系。_l J【 J
  一般而言,高端路由器包含3个映像(image)文件,在
  启动过程中依次载人(例如C7500系列)。它们是bootstrap
  image,boot image,IOS image。路由器开机自检后第
  ??个载入的是bootstrap image,它对处理和I/O(输 输
  出)控制器初始化后去查找boot flash中的boot image,加
  载boot image可以对接口进行简单的初始化。并不是所
  有平台的路由器都有该映像文件的,例如C2600系列的路
  由器就没有。Boot image加载之后,它会搜索Flash,查找
  可用的IOS并加载它。IOS是一个具有完全功能的映像
  文件,它负责路由接口初始化,协同高级特性的执行等其
  他工作,是路由器赖以工作的操作系统。最后加载
  NVRAM中的配置文件。
  前两种映像文件是在ROM中,用户不能更改。对于
  IOS,一般情况下,是在flash中,但也可放置在别的地方,
  比如T门nP Server。[3]
  寄存器值
  如何加载映像文件以及从哪里加载与寄存器的值有
  关,该值是一个十六位的二进制数(如表一所示),使用十
  六进制表示。出厂时的值为0X2102,其中0X是填充值,
  表示其后是十六进制数。
  该值写在NVRAM中,可使用show version命令查看
  这些比特中与启动时加载IOS有关的是最低(最后)的4
  个比特位,如表一所示。
  表1 寄存器的值
  启动区 l6进制
  比特位编号 l5 14 l3 l2 ll l0 9 8 7 6 5 4 3 2 l 0
  值 0 0 l 0 0 0 0 l 0 0 0 0 0 0 l 0 0X2102值
  表2 第0到3比特位对应的启动区每个值的含义
  启动区值 含 义 说明
  将寄存器的值设置成0 X2100,就可OOo0 ROM监控模式 以进入ROM监控模式,这种模式的提示符
  为ROMMON&或&。
  0()ol 使用ROM中的IOS 将寄存器的值设置成0 X2101,路由器将从ROM中加载IOS,这种模式的提示
  符为Router(boot) &。
  ool0 根据NVRAM 中的设置决 根据NVRAM中设置进行相应的启动,如果没有设置,则默认从Flash中加载
  一llll 定启动位置 IOS
  。
  要修改寄存器的值,在全局模式下使用config―register
  命令。
  如:Router(config)#con.fig―register 0 X2100
  Router(config)#exit .(退出配置模式)
  Router#shOW version
  [cut]
  configuration register is 0x2102(will be Ox2100
  at next reload)
  从上面最后一行的显示可以知道:下次启动路由器
  时,寄存器的新值就会产生作用。
  IOS加载顺序
  38
  如果寄存器的值为0010~l1l1,即十六进制的2~F,
  则查找IOS文件顺序如下:
  (1)从NVRAM中查找boot system命令后,如果存在,
  按照该命令指示的位置加载IOS。
  例如:Router(config)#boot system flash[slot 0:]
  [IOS―Filename]
  表示从0号插槽的flash中加载。
  Router(config)#boot system tftp[IOS filename][trip
  server―ip―address]
  表示从T兀P Server加载。
  Router(config)#boot system tom
  胡 j~:Erase flash,Erase NVRAM命令与CISCO路由器灾难恢复技术 2005年第5期
  表示从ROM 中加载。
  (2)如果不存在boot system命令就从默认flash中加
  载10S。
  (3)如果flash中10S被损坏或删除,则试图从网络上
  的T兀 server加载10So
  (4)如果从网络上的T兀 server加载10S仍然失败,
  就进入ROM监控模式。
  通过对配置寄存器的分析,NVRAM中不但存有启动
  配置文件,而且存有与10S加载密切相关的寄存器值,这
  不难看出erase NVRAM 同erase flash一样可以导致路由
  器进入ROMMON模式。⋯ -3_
  在进入灾难恢复之前,先看一下路由器的Flash里的
  文件,用命令:ronllnon l&dir flash:;注意命令中flash后
  面跟冒号(:),执行命令后会显示flash现在的10S大小和
  文件名、属性及容量(假如10S在flash内)。例如C2600:
  1、ronllnon 1 & dir flash:
  system falsh directory:
  File length Name/status
  l 00一i―mz.120―7.bin
  [7330984 bytes used,1 057624 available,8338608
  tota1]
  8 1 92K bytes of processor board system flash (Read/
  Write)
  如果File name和File size两项都是符合你的要求,那
  么也许是你的eonfig―register设置有问题或NVRAM恶意
  修改。正常的config―register应该是0x2102,注意0x2102
  中的最后一位值2,最后一位值在2到F都是正常的,con―
  fig_ register的值控制着路由器的启动。
  2、准备10S文件和ⅡYI’P server,如果没有10S文件或
  Cisco T兀 软件,你可在Cisco相关网站下载。
  首先将10S映像文件拷到Pc机上,安装ftp server应
  用软件,并运行该程序,T兀 .server软件在机器装的是
  cisco T兀 server目录,那么就把已存在PC机上的10S文
  件放在cisco T兀 server目录下,按照图二(或图三)所示
  将PC机与路由器连接好,打开控制台PC机的超级终端
  工具,连接上Router(路由器),此时窗El中出现的命令行
  提示符为:ROMMON l&(其中“l”代表命令行的行数),
  在提示符后输入如下命令:
  ROMMON l &IP― ADDRESS=ROUTER的IP地址
  (需要注意的是该IP要和Tm 软件所在PC机在同一网
  段内)。
  ROMMON 2 &IP_ SUBNET― MASK=ROUTE R的子网
  掩码。
  ROMMON 3&DEFAUL1 GATEWAY=默认网关地址
  (可以没有也可以是T兀 Server地址)。
  ROMMON 4 &TFrP―SERVER=TFrP Server的IP地
  址。
  ROMMON 5&TFrP―FILE=10S文件名(只给出文
  件名,不需要路径)。
  ROMMON 6&ftpdnld(文件下载)。
  几条命令必须使用大写,而最后一条fit.pd~ad则要用
  小写,ftpdnld命令执行后,只要根据提示选择,就可完成
  文件的传输。当文件传输完后,将自动回到命令行下,接
  着输入Reset重启路由器,回到熟悉的10S模式,这样做,
  甚至连以前配置的信息都不会丢失(仅指误用了ertL~
  flash命令,若用的erase NVRAM则不然)。
  IP:1... / ‘1
  eway:l0 .0 .0 . 1 1―◆
  PC机
  咐 ⋯
  r
  PC机串口
  图2
  tot"快速以太口)
  O.O 1
  tot"控制口)
  图3
  2005年第5期 胡成:Erase flash,Erase NVRAM命令与C1SCO路由器灾难恢复技术
  具体例子为:
  rommon 1 & IP― ADDRESS=10.0.0.2
  rommon 2 &IP
  _
  SUBNET
  _
  MASK =255.255.255.0
  rommon 3 & DEFAUUr-GATEWAY=1 0.0.0.1
  rommon 4 & TF]1P― SERVER =10.0.0.3
  rotnnlon 5 & TFTP― FILE= c2600一i―mz.120―7.bin
  rotnnlon 6 & ftpdnld
  显示如下:IP―ADDRESS=10.0.0.2
  IP― SUBNET_ MASK =255.255.255.0
  DEFAULT-GATEWAY=10.0.0.1
  T P
  ―
  SERVER:10.0.0.3
  TFTP―
  F1LE :c2600一i―mz.120―7.bin??
  Invoke this command for disaster recovery only.
  WARNING:all existing data in all partitions on flash,
  will be lost!
  Do you wish to continue?y/n:[n]:Y (此行缺省为
  no,需要键入yes回车)
  系统把前面配置的信息报告出来,以保证没有错误,
  并提示该命令仅作灾难恢复使用,而且警告:flash上所有
  分区中的数据都将丢失。
  Receiving c2600一i―lnz.120 ―7.bin from 10.0.0.3
  1 1 1 1 1 1 1 1 1 1.!!!!!!!!!!!!.!!!!!!!!!!!!! (“!”表示传
  输成功,“.”表示传输无效)。
  File reception completed
  Copying file c2600一i―nlz.120―7.bin to flash
  Erasing flash at 0x607c000
  Program flash location 0x61M40000
  此过程完成的是将IOS文件注入Router flash中,此后
  ronlnlon 22&reset就可重新启动并进入熟悉的lOS模式,
  到此灾难恢复成功。[ ][ ][ ][ ]
  3 结 语
  路由器是很复杂的设备,能支持很多配置,理解因特
  网的工作方式的一种方法就是配置路由器,路由器配置是
  一项网络管理人员需要掌握的很重要的技术。尽管实际
  的配置非常简单,多次重复后可以使之成为你的一种根深
  蒂固的习惯,作为网管,熟练掌握灾难恢复技术是非常必
  要的。当路由器开机后进入ROMMON模式时,并不一定
  没有IOS,因为有可能寄存器的值被恶意修改了,如果确
  认寄存器最后4 bit的值是2,则可以敲入boot或者reset
  命令,如果还没有正常启动才表明没有IOS,然后再进行
  灾难恢复。也可以使用前面提到的dir flash:命令来查看
  flash中是否有IOS文件,如果存在再使用boot或reset重
  启。作为一般的网络单位,网管人员对路由器的操作都是
  在使用过程中,不可能像做实验一样任你去钻研,任你去
  发挥,这就要求我们的网管尽量做好应有的防范措施。譬
  如:boot system的合理设置,IOS的备份,T兀’P server的保
  证等等,以便尽可能在最短的时间内处理灾难恢复故障。
  参考文献:
  [1][关]拉莫尔.CCNA学习指南.北京:电子工业
  出版社,2004.
  [2]CCNA English Version 3.1 htttp://www.eisco.com/
  en/US/leaming/netaead/index.htm1.
  [3]张国清,李涤非.CCNA(考试号640―801)学习指南
  .北京:人民邮电出版社,2004.
  [4]http://www.peonline.corn.cn/pcjob/nettech/cisco/
  others/;_3.htm1.
  [5]http://www.qqread.com/html/m―1.
  htm.
  [6]http://www.5.9915.com/html/router/cisco/638/
  40470.html
  【责任编辑杨清平】
  Erase Flashs and Erase N M Comman d an d CISC0
  Router Disaster Recovery Technique
  HU Cheng
  (Center for Network Management,Daxian Teachers College,Dazhou Sichuan 635000,China)
  Abstract:This paper briefly introduces normal start of router in proper order,emphatically analy zes the value of configuration re~ster
  closelv related to the image document loading.Two commands of“erase flash”and“erase nvram”both cause disasterous breakdown of
  router,and the technique of disaster recovery is expounded in detail.
  Key words:disaster recovery;erase flash;Erase NVRAM;lOS;The mode of ROMMON;configuration register
浏览: 8613 次
要耐得住寂寞,禁得起诱惑,该是你的总会到来,不是你的苦等无用, ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
#include &iostream&
#include &vector&
#include &string&
typedef unsigned short WORD;
int main()
vector&string& vS
vStr.push_back("1");
vStr.push_back("2");
vStr.push_back("3");
vStr.push_back("4");
vStr.push_back("5");
vector&string&::iterator it = vStr.begin();
cout && *it && // ..2......
cout && "------------------------\n";
vStr.erase(it++); // ...it++.++it................,..........
vector&string&::iterator iter = vStr.begin();
for ( iter != vStr.end(); iter++)
cout && *iter &&
cout && "-------------------------\n";
cout && *it && // ..4....3..erase..........................
system("pause");
standalone
浏览: 387772 次
来自: 上海
问题解决了吗?
神,好厉害,这是我找到的唯一可以ac的Java代码,厉害。
One answer I agree with:引用Whene ...
不错!,一开始对这些确实容易犯迷糊
Exception in thread &main& ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(2820)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'vector中erase用法注意事项',
blogAbstract:' vector中的erase方法有些诡异(^_^),稍不注意,就会出错。今天又一次遇到了,就索性总结一下,尤其是在循环体中用',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:4,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 yum erase remove 的文章

 

随机推荐