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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

darknet迭代多少次_STL:迭代器

發(fā)布時(shí)間:2024/9/15 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 darknet迭代多少次_STL:迭代器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

迭代器

  • 迭代器是算法和容器的橋梁
    • 迭代器用作訪問容器中的元素
    • 算法不直接操作容器中的數(shù)據(jù),而是通過迭代器間接操作
  • 算法和容器獨(dú)立
    • 增加新的算法,無需影響容器的實(shí)現(xiàn)
    • 增加新的容器,原有的算法也能適用

輸入流迭代器和輸出流迭代器

輸入流迭代器

istream_iterator<T>
    • 以輸入流(如cin)為參數(shù)構(gòu)造
    • 可用*(p++)獲得下一個(gè)輸入的元素

輸出流迭代器

ostream_iterator<T>
    • 構(gòu)造時(shí)需要提供輸出流(如cout)
    • 可用(*p++) = x將x輸出到輸出流
  • 二者都屬于適配器
    • 適配器是用來為已有對象提供新的接口的對象
    • 輸入流適配器和輸出流適配器為流對象提供了迭代器的接口

例:從標(biāo)準(zhǔn)輸入讀入幾個(gè)實(shí)數(shù),分別將它們的平方輸出

#include <iterator> #include <iostream> #include <algorithm> using namespace std;//求平方的函數(shù) double square(double x) {return x * x; } int main() {//從標(biāo)準(zhǔn)輸入讀入若干個(gè)實(shí)數(shù),分別將它們的平方輸出transform(istream_iterator<double>(cin), istream_iterator<double>(),ostream_iterator<double>(cout, "t"), square);cout << endl;return 0; }

迭代器支持的操作

  • 迭代器是泛化的指針,提供了類似指針的操作(諸如++、*、->運(yùn)算符)
  • 輸入迭代器
    • 可以用來從序列中讀取數(shù)據(jù),如輸入流迭代器
  • 輸出迭代器
    • 允許向序列中寫入數(shù)據(jù),如輸出流迭代器
  • 前向迭代器
    • 既是輸入迭代器又是輸出迭代器,并且可以對序列進(jìn)行單向的遍歷
  • 雙向迭代器
    • 與前向迭代器相似,但是在兩個(gè)方向上都可以對數(shù)據(jù)遍歷
  • 隨機(jī)訪問迭代器
    • 也是雙向迭代器,但能夠在序列中的任意兩個(gè)位置之間進(jìn)行跳轉(zhuǎn),如指針、使用vector的begin()、end()函數(shù)得到的迭代器

迭代器的區(qū)間

  • 兩個(gè)迭代器表示一個(gè)區(qū)間:[p1, p2)
  • STL算法常以迭代器的區(qū)間作為輸入,傳遞輸入數(shù)據(jù)
  • 合法的區(qū)間
    • p1經(jīng)過n次(n > 0)自增(++)操作后滿足p1 == p2
  • 區(qū)間包含p1,但不包含p2

例:綜合運(yùn)用幾種迭代器的示例

程序涉及到輸入迭代器、輸出迭代器、隨機(jī)訪問迭代器這三個(gè)迭代器概念,并且以前兩個(gè)概念為基礎(chǔ)編寫了一個(gè)通用算法。

#include <algorithm> #include <iterator> #include <vector> #include <iostream> using namespace std;//將來自輸入迭代器的n個(gè)T類型的數(shù)值排序,將結(jié)果通過輸出迭代器result輸出 template <class T, class InputIterator, class OutputIterator> void mySort(InputIterator first, InputIterator last, OutputIterator result) {//通過輸入迭代器將輸入數(shù)據(jù)存入向量容器s中vector<T> s;for (;first != last; ++first)s.push_back(*first);//對s進(jìn)行排序,sort函數(shù)的參數(shù)必須是隨機(jī)訪問迭代器sort(s.begin(), s.end()); copy(s.begin(), s.end(), result); //將s序列通過輸出迭代器輸出 }int main() {//將s數(shù)組的內(nèi)容排序后輸出double a[5] = { 1.2, 2.4, 0.8, 3.3, 3.2 };mySort<double>(a, a + 5, ostream_iterator<double>(cout, " "));cout << endl;//從標(biāo)準(zhǔn)輸入讀入若干個(gè)整數(shù),將排序后的結(jié)果輸出mySort<int>(istream_iterator<int>(cin), istream_iterator<int>(), ostream_iterator<int>(cout, " "));cout << endl;return 0; } /* 運(yùn)行結(jié)果: 0.8 1.2 2.4 3.2 3.3 2 -4 5 8 -1 3 6 -5 -5 -4 -1 2 3 5 6 8 */

迭代器的輔助函數(shù)

  • advance(p, n)
    • 對p執(zhí)行n次自增操作
  • distance(first, last)
    • 計(jì)算兩個(gè)迭代器first和last的距離,即對first執(zhí)行多少次“++”操作后能夠使得first == last

總結(jié)

以上是生活随笔為你收集整理的darknet迭代多少次_STL:迭代器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。