10.4 再探迭代器-插入/IO/反向
生活随笔
收集整理的這篇文章主要介紹了
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 Code10.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 Code10.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/反向的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql for Mac 下创建数据表
- 下一篇: 小程序分享朋友圈之填坑模式