亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ primer基礎之容器insert

2020-01-26 14:14:31
字體:
來源:轉載
供稿:網友

C++ primer基礎之容器insert

 今天學習C++ 基礎知識的時候遇到這樣問題,始終出現segments fault。最后才發現原來是自己對“容器insert之后迭代器會失效”的理解不夠透徹。

題目如下:

假定iv是一個int的vector,下面的程序存在什么錯誤?你將如何修改?

auto iter = iv.begin();auto mid = iv.begin() + iv.size() / 2;while(iter != mid){ if(*iter == some_val)  iv.insert(iter, 2 * some_val);}

我起初編寫的代碼如下:

/************************************************************************* > File Name: 9.22.cpp > Author: wanchouchou > Mail: 200802376@qq.com > Created Time: 2014年11月02日 星期日 16時34分20秒 ************************************************************************/#include<iostream>#include<vector>using namespace std;int main(){ vector<int> vint = {1,1,1,1,1,3,4,1}; const int val = 1; auto viBegin = vint.begin();    /*這里需要注意,如果vint.size小于等于1的話,viMid = viBegin 那么就不會進入while循環,所以我們應當單獨考慮這種情況*/ auto viMid = vint.begin() + vint.size()/2;  if(vint.empty()){  cout << "This vector is empty!" << endl;  return 0; } if(vint.size() == 1){  if(*viBegin == val){   vint.insert(viBegin, 2 * val);  }  goto print; }  while(viBegin != viMid){  if(*viBegin == val){   vint.insert(viBegin, 2 * val);35   }  ++viBegin; } print: auto viEnd = vint.end(); viBegin = vint.begin(); while(viBegin != viEnd){  cout << *viBegin << ", ";  ++viBegin; } cout << endl;}

運行的時候出現 segmentation faulted.

從邏輯上來講,應該是沒問題啊,那為什么又會出錯呢?原來我忘記了對容器進行插入操作的重要影響“除了end之外,所有的迭代器都會失效?。?!”。當完成第一次插入之后,此時的viBegin和viMid已經失效了,那么之后對其的所有操作都是非法的。所以我們必須在每一次插入操作之后對兩個迭代器重新賦值。鑒于對viMid的賦值比較麻煩,所以采用另外的方式記錄當前迭代器是否到達容器的中點,代碼如下:

/************************************************************************* > File Name: 9.22.cpp > Author: wanchouchou > Mail: 200802376@qq.com > Created Time: 2014年11月02日 星期日 16時34分20秒 ************************************************************************/#include<iostream>#include<vector>using namespace std;int main(){ vector<int> vint = {1,1,1,1,3,4,1}; const int val = 1; auto viBegin = vint.begin(); /*這里需要注意,如果vint.size小于等于1的話,viMid = viBegin 那么就不會進入while循環,所以我們應當單獨考慮這種情況*/ auto mid = vint.size() / 2; if(vint.empty()){  cout << "This vector is empty!" << endl;  return 0; } if(vint.size() == 1){  if(*viBegin == val){   vint.insert(viBegin, 2 * val);  }  goto print; } while(distance(viBegin, vint.end()) > mid){  if(*viBegin == val){   viBegin = vint.insert(viBegin, 2 * val);   ++viBegin;  }  ++viBegin; }print: auto viEnd = vint.end(); viBegin = vint.begin(); while(viBegin != viEnd){  cout << *viBegin << ", ";  ++viBegin; } cout << endl;}

運行效果如下:

wanchouchou@wanchouchou-virtual-machine:~/c++/9.*$ ./9.222, 1, 2, 1, 2, 1, 2, 1, 3, 4, 1, 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩动漫免费观看电视剧高清| 亚洲free性xxxx护士白浆| 日韩av手机在线观看| 国产精品美女免费视频| 亚洲第一二三四五区| 高清视频欧美一级| 欧美日本中文字幕| 中文字幕一区电影| 精品久久中文字幕| 亚洲美女喷白浆| 日韩精品中文字幕在线播放| 成人午夜激情免费视频| 日韩视频在线一区| 国语自产精品视频在线看| 中文字幕在线日韩| 91精品视频播放| 欧美综合激情网| 青青青国产精品一区二区| 在线视频日韩精品| 欧美日韩另类视频| 久久久精品免费视频| 亚洲片国产一区一级在线观看| 亚洲色图综合网| 欧美性理论片在线观看片免费| 7777kkkk成人观看| 亚洲最大福利视频网| 久久99久久99精品中文字幕| 国产精品自产拍在线观看中文| 亚洲精品福利在线观看| 成年人精品视频| 高清视频欧美一级| 亚洲欧美国产制服动漫| 91成品人片a无限观看| 亚洲影院在线看| 日韩欧美精品中文字幕| 久久久999精品视频| 久久国产精品久久久| 亚洲精品国产精品国自产观看浪潮| 久久久免费在线观看| 色噜噜久久综合伊人一本| 热99在线视频| 亚洲第一综合天堂另类专| 亚洲欧美国产精品| 国产成人小视频在线观看| 亚洲欧美制服中文字幕| 欧美激情一区二区三区高清视频| 国产精品久久久久久久久久久新郎| 久久精品成人欧美大片古装| 91社区国产高清| 日韩美女主播视频| 91网站在线看| 成人国产精品久久久久久亚洲| 日韩免费精品视频| 日韩精品在线观看视频| 97在线观看视频| 人体精品一二三区| 亚洲二区在线播放视频| 亚洲第一综合天堂另类专| 久久精品国产2020观看福利| 亚洲v日韩v综合v精品v| 成人免费视频网| 97成人精品区在线播放| 91色视频在线观看| 97色在线观看免费视频| 九九九久久国产免费| 欧洲s码亚洲m码精品一区| 91精品在线影院| 欧美乱人伦中文字幕在线| 91精品国产自产在线老师啪| 国产亚洲综合久久| 久久视频在线直播| 久久精品一偷一偷国产| 海角国产乱辈乱精品视频| 精品视频一区在线视频| 青青久久av北条麻妃海外网| 亚洲欧美另类在线观看| 亚洲精品视频免费在线观看| 91精品视频免费观看| 久久亚洲精品中文字幕冲田杏梨| 欧美最猛性xxxxx(亚洲精品)| 奇米4444一区二区三区| www国产亚洲精品久久网站| 国产在线日韩在线| 91在线网站视频| 91亚洲精品久久久久久久久久久久| 中文字幕9999| 一本色道久久综合狠狠躁篇的优点| 亚洲欧美中文字幕在线一区| 午夜精品三级视频福利| 国产精品777| 在线观看不卡av| 青青在线视频一区二区三区| 97视频在线免费观看| 亚洲国产精品成人av| 亚洲美女中文字幕| 国产日产久久高清欧美一区| 国产精品稀缺呦系列在线| 中文字幕综合一区| 日韩欧美精品在线观看| 国产精品精品久久久久久| 精品久久久免费| 久久综合国产精品台湾中文娱乐网| 2018中文字幕一区二区三区| 日韩成人激情视频| 日本久久久久久久久| 欧美在线一区二区三区四| 国产99久久久欧美黑人| 成人网在线免费观看| 5278欧美一区二区三区| 欧美日韩免费区域视频在线观看| 亚洲人成电影在线观看天堂色| 日韩视频在线一区| 日韩福利伦理影院免费| 亚洲欧美资源在线| 亚洲福利在线观看| 日韩欧美在线视频免费观看| 黑人巨大精品欧美一区二区| 国产免费亚洲高清| 91久久久久久久久| 国产成人av在线| 91日韩在线视频| 亚洲18私人小影院| 91精品中国老女人| 久久久久久久一| 亚洲wwwav| 日韩最新av在线| 日韩**中文字幕毛片| 国产亚洲美女久久| 国产欧美日韩丝袜精品一区| 亚洲综合在线中文字幕| 亚洲精品视频在线观看视频| 亚洲欧美在线播放| 亚洲第一页中文字幕| 插插插亚洲综合网| 不卡av日日日| 欧美在线视频在线播放完整版免费观看| 97视频在线观看视频免费视频| 日韩中文字幕在线精品| 亚洲高清久久网| 欧美最猛性xxxx| 国产精品老女人视频| 性色av一区二区三区免费| 欧美国产日韩一区二区在线观看| 亚洲欧洲自拍偷拍| 免费av一区二区| 日本精品久久中文字幕佐佐木| 91免费看国产| 亚洲无限乱码一二三四麻| 久久色在线播放| 亚洲精品久久久久久久久久久| 国产精品久久久久久久久久东京| 国产一区红桃视频| 欧美日产国产成人免费图片| 青青草国产精品一区二区| 色婷婷av一区二区三区在线观看| 97免费中文视频在线观看| 96国产粉嫩美女| 中文字幕日韩欧美精品在线观看| 亚洲国产日韩欧美在线动漫| 欧美最顶级丰满的aⅴ艳星| 91免费高清视频| 国产精品视频久久久| 一区二区三区日韩在线| 日韩中文字幕国产精品|