日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10.4 再探迭代器-插入/IO/反向

發(fā)布時間:2025/7/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10.4 再探迭代器-插入/IO/反向 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

10.4.1 插入迭代器

插入迭代器接受一個容器,生成一個迭代器,通過向該迭代器賦值可以實現向容器添加元素?
(1)back_inserter:?
接受一個參數,?
示例:?
auto iter = back_inserter(iVec);?
iter = value;?
(2)front_inserter:?
接受一個參數,?
示例:?
auto iter = front_inserter(iVec);?
iter = value;?
(3)inserter:?
接受兩個參數,示例:auto iter = inserter(iVec, it); //it必須是一個指向iVec的迭代器,?
iter = value; //將value插入到it之前

習題 10.28 三種插入迭代器的應用

int main() {int array[] = { 1,2,3,4,5,6 };vector<int> iVec(begin(array), end(array));vector<int> iVec_back;deque<int> iDeque_front;list<int> iList_inserter;copy(iVec.begin(), iVec.end(), back_inserter(iVec_back));copy(iVec.begin(), iVec.end(), front_inserter(iDeque_front));copy(iVec.begin(), iVec.end(), inserter(iList_inserter, iList_inserter.begin()));system("pause"); } View Code

習題10.27

int main() {int array[] = { -2, 6, 1, 6, 5, -9, 4, -2, 8 };vector<int> iVec(begin(array), end(array));vector<int> iVecUnique;//元素排序,為拷貝不重復的元素做準備 stable_sort(iVec.begin(), iVec.end());//拷貝不重復的元素到iVecUnique unique_copy(iVec.begin(), iVec.end(), back_inserter(iVecUnique));system("pause"); } View Code

10.4.2 iostream迭代器

主要目的是使用算法操作流迭代器。

習題10.30 標準流迭代器的應用

int main() {istream_iterator<int> in_ite(cin); //定義輸入流迭代器,并綁定標準輸入流istream_iterator<int> in_end; //定義尾后迭代器,沒有數據讀入時迭代器就為尾后迭代器ostream_iterator<int> out_iter(cout); //定義輸出流迭代器,并綁定標準輸出流vector<int> iVec;copy(in_ite, in_end, back_inserter(iVec));sort(iVec.begin(), iVec.end());//排序copy(iVec.begin(), iVec.end(), out_iter);//輸出到與 out_iter 綁定的標準輸出設備system("pause"); } View Code

習題 10.29 使用流迭代器讀取文件

int main() { ifstream ifstrm("h:\\1.txt"); //定義文件輸入流istream_iterator<string> in_iter(ifstrm); //定義IO類的輸入迭代器,并綁定ifstrmistream_iterator<string> in_end; //定義尾后迭代器,沒有數據讀入時迭代器就為尾后迭代器vector<string> strVec;copy(in_iter, in_end, back_inserter(strVec)); //利用copy算法將文件中的內容放到容器,以單詞為組 system("pause"); } View Code

10.4.3反向迭代器

//假定有一個名為 line 的string,保存著一個逗號分隔的單詞列表,我們希望打印line中的第一個單詞和最后一個單詞,則分別用正向迭代器和逆向迭代器 int main() { string line = "first,middle,last";auto comma = find(line.cbegin(), line.cend(), ','); //查找第一個逗號cout << string(line.cbegin(), comma) << endl;//打印最后一個單詞auto rcomma = find(line.crbegin(), line.crend(), ','); //查找最后一個逗號cout << string(line.crbegin(), rcomma) << endl; //錯誤,輸出 tsal 是逆序的//cout << string(rcomma, line.crbegin()) << endl; //錯誤,rcomma是一個逆向迭代器,而line.crbegin()返回尾后字符,所以會溢出cout << string(rcomma.base(), line.end()) << endl; //正確,反向迭代器調用base()函數會返回普通迭代器,注意調用后指向不同的元素,會移動一位system("pause"); } View Code

?

轉載于:https://www.cnblogs.com/liyubo/p/7868754.html

總結

以上是生活随笔為你收集整理的10.4 再探迭代器-插入/IO/反向的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。