日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【Boost】boost库中function的用法

發布時間:2024/4/11 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Boost】boost库中function的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要開始使用 Boost.Function, 就要包含頭文件?"boost/function.hpp", 或者某個帶數字的版本,從"boost/function/function0.hpp"?到?"boost/function/function10.hpp". 如果你知道你想保存在?function?中的函數的參數數量,這樣做可以讓編譯器僅包含需要的頭文件。如果包含?"boost/function.hpp", 那么就會把其它的頭文件也包含進去。

理解被存函數的最佳方法是把它想象為一個普通的函數對象,該函數對象用于封裝另一個函數(或函數對象)。這個被存的函數的最大用途是它可以被多次調用,而無須在創建?function?時立即使用。在聲明?functions 時,聲明中最重要的部分是函數的簽名。這部分即是告訴?function?它將保存的函數或函數對象的簽名和返回類型。我們已經看到,有兩種方法來執行這個聲明。這里有一個完整的程序,程序聲明了一個?boost::function?,它可以保存返回bool?(或某個可以隱式轉換為?bool?的類型)并接受兩個參數的類函數實體,第一個參數可以轉換為?int, 第二個參數可以轉換為?double.

[cpp] view plain copy
  • #include?<iostream>??
  • #include?"boost/function.hpp"??
  • bool?some_func(int?i,double?d)?{??
  • ??return?i>d;??
  • }??
  • int?main()?{??
  • ??boost::function<bool?(int,double)>?f;??
  • ??f=&some_func;??
  • ??f(10,1.1);??
  • }??
  • 當?function f?首次創建時,它不保存任何函數。它是空的,可以在一個布爾上下文中進行測試。如果你試圖調用一個沒有保存任何函數或函數對象的?function?,它將拋出一個類型?bad_function_call?的異常。為了避免這個問題,我們用普通的賦值語法把一個指向?some_func?的指針賦值給?f?。這導致?f?保存了到?some_func?的指針。最后,我們用參數10 (一個?int) 和 1.1 (一個?double)來調用?f?(用函數調用操作符)。要調用一個?function, 你必須提供被存函數或函數對象所期望的準確數量的參數。

    回調的基礎

    我們先來看看在沒有 Boost.Function 以前我們如何實現一個簡單的回調,然后再把代碼改為使用?function, 并看看會帶來什么優勢。我們從一個支持某種簡單的回調形式的類開始,它可以向任何對新值關注的對象報告值的改變。這里的回調是一種傳統的C風格回調,即使用普通函數。這種回調用可用于象GUI控制這樣的場合,它可以通知觀察者用戶改變了它的值,而不需要對監聽該信息的客戶有任何特殊的知識。

    [cpp] view plaincopy
  • #include?<iostream>??
  • #include?<vector>??
  • #include?<algorithm>??
  • #include?"boost/function.hpp"??
  • void?print_new_value(int?i)?{??
  • ??std::cout?<<???
  • ????"The?value?has?been?updated?and?is?now?"?<<?i?<<?'/n';??
  • }??
  • void?interested_in_the_change(int?i)?{??
  • ??std::cout?<<?"Ah,?the?value?has?changed./n";??
  • }??
  • class?notifier?{??
  • ??typedef?void?(*function_type)(int);??
  • ??std::vector<function_type>?vec_;??
  • ??int?value_;??
  • public:??
  • ??void?add_observer(function_type?t)?{??
  • ????vec_.push_back(t);??
  • ??}??
  • ??void?change_value(int?i)?{??
  • ????value_=i;??
  • ????for?(std::size_t?i=0;i<vec_.size();++i)?{??
  • ??????(*vec_[i])(value_);??
  • ????}??
  • ??}??
  • };??
  • int?main()?{??
  • ??notifier?n;??
  • ??n.add_observer(&print_new_value);??
  • ??n.add_observer(&interested_in_the_change);??
  • ??
  • ??n.change_value(42);??
  • }??
  • 這里的兩個函數,print_new_value?和?interested_in_the_change, 它們的函數簽名都兼容于?notifier?類的要求。這些函數指針被保存在一個?vector?內,并且無論何時它的值被改變,這些函數都會在一個循環里被調用。調用這些函數的一種語法是:

    (*vec_[i])(value_);

    值(value_)被傳遞給解引用的函數指針(即?vec_[i]?所返回的)。另一種寫法也是有效的,即這樣:

    vec_[i](value_);

    這種寫法看起來更好看些,但更為重要的是,它還可以允許你把函數指針更換為 Boost.Function 而沒有改變調用的語法。現在,工作還是正常的,但是,唉,函數對象不能用于這個?notifier?類。事實上,除了函數指針以外,別的任何東西都不能用,這的確是一種局限。但是,如果我們使用 Boost.Function,它就可以工作。重寫這個?notifier類非常容易。

    [cpp] view plaincopy
  • class?notifier?{??
  • ??typedef?boost::function<void(int)>?function_type;??
  • ??std::vector<function_type>?vec_;??
  • ??int?value_;??
  • public:??
  • ??template?<typename?T>?void?add_observer(T?t)?{??
  • ????vec_.push_back(function_type(t));??
  • ??}??
  • ??
  • ??void?change_value(int?i)?{??
  • ????value_=i;??
  • ????for?(std::size_t?i=0;i<vec_.size();++i)?{??
  • ??????vec_[i](value_);??
  • ????}??
  • ??}??
  • };??
  • 首先要做的事是,把?typedef?改為代表?boost::function?而不是函數指針。之前,我們定義的是一個函數指針;現在,我們使用泛型方法,很快就會看到它的用途。接著,我們把成員函數?add_observer?的簽名改為泛化的參數類型。我們也可以把它改為接受一個?boost::function,但那樣會要求該類的用戶必須也知道?function?的使用方法[2],而不是僅僅知道這個觀察者類型的要求就行了。應該注意到?add_observer?的這種變化并不應該是轉向function?的結果;無論如何代碼應該可以繼續工作。我們把它改為泛型的;現在,不管是函數指針、函數對象,還是?boost::function?實例都可以被傳遞給?add_observer, 而無須對已有用戶代碼進行任何改動。把元素加入到vector?的代碼有一些修改,現在需要創建一個?boost::function<void(int)>?實例。最后,我們把調用這些函數的語法改為可以使用函數、函數對象以及?boost::function?實例[3]。這種對不同類型的類似函數的"東西"的擴展支持可以立即用于帶狀態的函數對象,它們可以實現一些用函數很難做到的事情。

    [2]?他們應該知道 Boost.Function,但如果他們不知道呢?我們添加到接口上的任何東西都必須及時向用戶解釋清楚。

    [3]?現在我們知道,一開始我們就應該用這種語法。

    [cpp] view plaincopy
  • class?knows_the_previous_value?{??
  • ??int?last_value_;??
  • public:??
  • ??void?operator()(int?i)?{??
  • ????static?bool?first_time=true;??
  • ????if?(first_time)?{??
  • ??????last_value_=i;??
  • ??????std::cout?<<???
  • ????????"This?is?the?first?change?of?value,?/??
  • so?I?don't?know?the?previous?one./n";??
  • ??????first_time=false;??
  • ??????return;??
  • ????}??
  • ????std::cout?<<?"Previous?value?was?"?<<?last_value_?<<?'/n';??
  • ????last_value_=i;??
  • ??}??
  • };??
  • 這個函數對象保存以前的值,并在值被改變時把舊值輸出到?std::cout?。注意,當它第一次被調用時,它并不知道舊值。這個函數對象在函數中使用一個靜態?bool?變量來檢查這一點,該變量被初始化為?true. 由于函數中的靜態變量是在函數第一次被調用時進行初始化的,所以它僅在第一次調用時被設為?true?。雖然也可以在普通函數中使用靜態變量來提供狀態,但是我們必須知道那樣不太好,而且很難做到多線程安全。因此,帶狀態的函數對象總是優于帶靜態變量的普通函數。notifier?類并不關心這是不是函數對象,只要符合要求就可以接受。以下更新的例子示范了它如何使用。

    [cpp] view plaincopy
  • int?main()?{??
  • ??notifier?n;??
  • ??n.add_observer(&print_new_value);??
  • ??n.add_observer(&interested_in_the_change);??
  • ??n.add_observer(knows_the_previous_value());??
  • ??
  • ??n.change_value(42);??
  • ??std::cout?<<?'/n';??
  • ??n.change_value(30);??
  • }??
  • 關鍵一點要注意的是,我們新增的一個觀察者不是函數指針,而是一個?knows_the_previous_value?函數對象的實例。運行這段程序的輸出如下:

    The value has been updated and is now 42 Ah, the value has changed. This is the first change of value, so I don't know the previous one.The value has been updated and is now 30 Ah, the value has changed. Previous value was 42

    在這里最大的優點不是放寬了對函數的要求(或者說,增加了對函數對象的支持),而是我們可以使用帶狀態的對象,這是非常需要的。我們對?notifier?類所做的修改非常簡單,而且用戶代碼不受影響。如上所示,把 Boost.Function 引入一個已有的設計中是非常容易的。

    類成員函數

    Boost.Function 不支持參數綁定,這在每次調用一個?function?就要調用同一個類實例的成員函數時是需要的。幸運的是,如果這個類實例被傳遞給?function?的話,我們就可以直接調用它的成員函數。這個?function?的簽名必須包含類的類型以及成員函數的簽名。換言之,顯式傳入的類實例要作為隱式的第一個參數,this。這樣就得到了一個在給出的對象上調用成員函數的函數對象。看一下以下這個類:

    [cpp] view plaincopy
  • class?some_class?{??
  • public:??
  • ??void?do_stuff(int?i)?const?{??
  • ????std::cout?<<?"OK.?Stuff?is?done.?"?<<?i?<<?'/n';??
  • ??}??
  • };??
  • 成員函數?do_stuff?要從一個?boost::function?實例里被調用。要做到這一點,我們需要 function 接受一個some_class?實例,簽名的其它部分為一個?void?返回以及一個?int?參數。對于如何把?some_class?實例傳給 function,我們有三種選擇:傳值,傳引用,或者傳址。如何要傳值,代碼就應該這樣寫[4]

    [4]?很少會有理由來以傳值的方式傳遞對象參數。

    [cpp] view plaincopy
  • boost::function<void(some_class,int)>?f;??
  • 注意,返回類型仍舊在最開始,后跟成員函數所在的類,最后是成員函數的參數類型。它就象傳遞一個?this?給一個函數,該函數暗地里用類實例調用一個非成員函數。要把函數?f?配置為成員函數?do_stuff, 然后調用它,我們這樣寫:

    [cpp] view plaincopy
  • f=&some_class::do_stuff;??
  • f(some_class(),2);??
  • 如果要傳引用,我們要改一下函數的簽名,并傳遞一個?some_class?實例。

    [cpp] view plaincopy
  • boost::function<void(some_class&,int)>?f;??
  • f=&some_class::do_stuff;??
  • some_class?s;??
  • f(s,1);??
  • 最后,如果要傳?some_class?的指針[5],我們就要這樣寫:

    [5]?裸指針或智能指針皆可。

    [cpp]?view plaincopy
  • boost::function<void(some_class*,int)>?f;??
  • f=&some_class::do_stuff;??
  • some_class?s;??
  • f(&s,3);??
  • 好了,所有這些傳遞"虛擬?this"實例的方法都已經在庫中提供。當然,這種技術也是有限制的:你必須顯式地傳遞類實例;而理想上,你更愿意這個實例被綁定在函數中。乍一看,這似乎是 Boost.Function 的缺點,但有別的庫可以支持參數的綁定,如 Boost.Bind 和 Boost.Lambda. 我們將在本章稍后的地方示范這些庫會給 Boost.Function 帶有什么好處。

    帶狀態的函數對象

    我們已經看到,由于支持了函數對象,就可以給回調函數增加狀態。考慮這樣一個類,keeping_state, 它是一個帶狀態的函數對象。keeping_state?的實例記錄一個總和,它在每次調用操作符執行時被增加。現在,將該類的一個實例用于兩個?boost::function?實例,結果有些出人意外。

    [cpp] view plaincopy
  • #include?<iostream>??
  • #include?"boost/function.hpp"??
  • class?keeping_state?{??
  • ??int?total_;??
  • public:??
  • ??keeping_state():total_(0)?{}??
  • ??int?operator()(int?i)?{??
  • ????total_+=i;??
  • ????return?total_;??
  • ??}??
  • ??int?total()?const?{??
  • ????return?total_;??
  • ??}??
  • };??
  • int?main()?{??
  • ??keeping_state?ks;??
  • ??boost::function<int(int)>?f1;??
  • ??f1=ks;??
  • ??boost::function<int(int)>?f2;??
  • ??f2=ks;??
  • ??std::cout?<<?"The?current?total?is?"?<<?f1(10)?<<?'/n';??
  • ??std::cout?<<?"The?current?total?is?"?<<?f2(10)?<<?'/n';??
  • ??std::cout?<<?"After?adding?10?two?times,?the?total?is?"???
  • ????<<?ks.total()?<<?'/n';??
  • }??
  • 寫完這段代碼并接著執行它,程序員可能期望保存在?ks?的總和是20,但不是;事實上,總和為0。以下是這段程序的運行結果。

    The current total is 10 The current total is 10 After adding 10 two times, the total is 0

    原因是每一個?function?實例(f1?和?f2)都含有一個?ks?的拷貝,這兩個實例得到的總和都是10,但?ks?沒有變化。這可能是也可能不是你想要的,但是記住,boost::function?的缺省行為是復制它要調用的函數對象,這一點很重要。如果這導致不正確的語義,或者如果某些函數對象的復制代價太高,你就必須把函數對象包裝在boost::reference_wrapper?中,那樣?boost::function?的復制就會是一個?boost::reference_wrapper?的拷貝,它恰好持有一個到原始函數對象的引用。你無須直接使用?boost::reference_wrapper?,你可以使用另兩個助手函數,ref?和?cref。 這兩函數返回一個持有到某特定類型的引用或?const?引用的?reference_wrapper。在前例中,要獲得我們想要的語義,即使用同一個?keeping_state?實例,我們就需要把代碼修改如下:

    [cpp] view plaincopy
  • int?main()?{??
  • ??keeping_state?ks;??
  • ??boost::function<int(int)>?f1;??
  • ??f1=boost::ref(ks);??
  • ??
  • ??boost::function<int(int)>?f2;??
  • ??f2=boost::ref(ks);??
  • ??
  • ??std::cout?<<?"The?current?total?is?"?<<?f1(10)?<<?'/n';??
  • ??std::cout?<<?"The?current?total?is?"?<<?f2(10)?<<?'/n';??
  • ??std::cout?<<?"After?adding?10?two?times,?the?total?is?"???
  • ????<<?ks.total()?<<?'/n';??
  • }??
  • boost::ref?的用途是通知?boost::function,我們想保存一個到函數對象的引用,而不是一個拷貝。運行這個程序有以下輸出:

    The current total is 10 The current total is 20 After adding 10 two times, the total is 20

    這正是我們想要的結果。使用?boost::ref?和?boost::cref?的不同之處就象引用與?const?引用的差異,對于后者,你只能調用其中的常量成員函數。以下例子使用一個名為?something_else?的函數對象,它有一個?const?的調用操作符。

    [cpp] view plaincopy
  • class?something_else?{??
  • public:??
  • ??void?operator()()?const?{??
  • ????std::cout?<<?"This?works?with?boost::cref/n";??
  • ??}??
  • };??
  • 對于這個函數對象,我們可以使用?boost::ref?或?boost::cref.

    [cpp] view plaincopy
  • something_else?s;??
  • boost::function0<void>?f1;??
  • f1=boost::ref(s);??
  • f1();??
  • boost::function0<void>?f2;??
  • f2=boost::cref(s);??
  • f2();??
  • 如果我們改變了?something_else?的實現,使其函數為非const, 則只有?boost::ref?可以使用,而?boost::cref?將導致一個編譯期錯誤。

    [cpp] view plaincopy
  • class?something_else?{??
  • public:??
  • ??void?operator()()?{??
  • ????std::cout?<<???
  • ??????"This?works?only?with?boost::ref,?or?copies/n";??
  • ??}??
  • };??
  • ??
  • something_else?s;??
  • boost::function0<void>?f1;??
  • f1=boost::ref(s);?//?This?still?works??
  • f1();???
  • boost::function0<void>?f2;??
  • f2=boost::cref(s);?//?This?doesn't?work;???
  • ???????????????????//?the?function?call?operator?is?not?const??
  • f2();??
  • 如果一個?function?包含一個被?boost::reference_wrapper?所包裝的函數對象,那么復制構造函數與賦值操作就會復制該引用,即?function?的拷貝將引向原先的函數對象。

    [cpp] view plaincopy
  • int?main()?{??
  • ??keeping_state?ks;??
  • ??boost::function1<int,int>?f1;??//?譯注:原文為boost::function<int,int>?f1,有誤??
  • ??f1=boost::ref(ks);??
  • ??
  • ??boost::function1<int,int>?f2(f1);??//?譯注:原文為boost::function<int,int>?f2(f1),有誤???
  • ??boost::function1<short,short>?f3;??//?譯注:原文為boost::function<short,short>?f3,有誤???
  • ??f3=f1;??
  • ??
  • ??std::cout?<<?"The?current?total?is?"?<<?f1(10)?<<?'/n';??
  • ??std::cout?<<?"The?current?total?is?"?<<?f2(10)?<<?'/n';??
  • ??std::cout?<<?"The?current?total?is?"?<<?f3(10)?<<?'/n';??
  • ??std::cout?<<?"After?adding?10?three?times,?the?total?is?"???
  • ????<<?ks.total()?<<?'/n';??
  • }??
  • 這等同于使用?boost::ref?并把函數對象?ks?賦給每一個 function 實例。

    給回調函數增加狀態,可以發揮巨大的能力,這也正是使用 Boost.Function 與使用函數對象相比具有的非常突出的優點。


    總結

    以上是生活随笔為你收集整理的【Boost】boost库中function的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    久久天天躁夜夜躁狠狠躁2022 | 一区二区三区电影大全 | 久久亚洲二区 | 日本中出在线观看 | 在线播放 日韩专区 | 91久久人澡人人添人人爽欧美 | av福利超碰网站 | 国产精品24小时在线观看 | 国产精品免费在线视频 | 国产综合香蕉五月婷在线 | 国产一区二区三精品久久久无广告 | 国产精品18久久久久久久网站 | 国产在线观看免费av | 欧美另类亚洲 | 日韩狠狠操 | 麻豆传媒视频在线 | 人人看人人草 | 91丨九色丨勾搭 | 99热精品久久 | 日韩精品国产一区 | 91av视频免费在线观看 | 午夜精品久久久久久久99水蜜桃 | 国产黄色高清 | 国产精品久久久久久久久久久不卡 | 国产一区在线不卡 | 国产黄色片久久久 | 国产九九热视频 | www.黄色片网站 | 国产在线观看二区 | 中文字幕在线免费97 | 久久99电影 | av在线网站观看 | 黄色成人在线观看 | 五月婷婷爱| 免费看片网址 | 欧美色图p| 久久久久免费视频 | 午夜黄网 | 婷婷色中文 | 亚洲激情小视频 | 天天干天天操人体 | 欧美一级欧美一级 | 国产精品扒开做爽爽的视频 | 日日爽天天 | 97成人精品区在线播放 | 最新成人av | 日韩欧美视频一区二区三区 | 欧美日韩不卡在线 | 人人添人人澡人人澡人人人爽 | 国产精品久久艹 | 国产五月婷婷 | 97在线观看免费视频 | 一本一道久久a久久精品 | 韩日电影在线免费看 | 99一级片| 国产精品久久一区二区三区, | 一区二区三区电影 | 国产精品久久久久久久久久久久久久 | 九九热国产| 精品国产123 | 日韩精品一区二区三区电影 | 一区二区亚洲精品 | 精品国产精品一区二区夜夜嗨 | 在线视频免费观看 | 天天天综合网 | 午夜影院先 | 蜜桃传媒一区二区 | 欧美性黄网官网 | 日韩免费在线视频观看 | 成人xxxx| 欧美精品久久久久久久免费 | 国产精品欧美日韩在线观看 | 亚洲午夜精 | 中文字幕在线观看视频网站 | 麻豆视频国产精品 | 色综合久久久久 | 日韩在线精品 | 亚洲激情电影在线 | 亚洲视频免费视频 | 亚洲乱码精品 | 国产69精品久久app免费版 | 少妇性色午夜淫片aaaze | 欧美日韩视频一区二区三区 | 日韩在线视频二区 | 久久免费久久 | 亚洲激情视频在线观看 | 欧美日韩在线电影 | 亚洲伊人网在线观看 | 精品美女久久久久久免费 | 狠狠干综合网 | 免费网站看v片在线a | 欧美日本啪啪无遮挡网站 | 在线免费黄色毛片 | 成年人电影免费在线观看 | 国产一区二区三区免费观看视频 | 国产精品久久99综合免费观看尤物 | 国产91区 | av电影中文字幕在线观看 | 日本丶国产丶欧美色综合 | 2019天天干天天色 | 国产精品1024 | 欧美一区二区免费在线观看 | 日韩精品免费专区 | 99免费观看视频 | 久久国产精品精品国产色婷婷 | 天天夜夜狠狠操 | av免费电影在线观看 | 国产精品嫩草影视久久久 | 96国产精品| 亚洲码国产日韩欧美高潮在线播放 | 成人a视频片观看免费 | 色综合久久悠悠 | 91大神一区二区三区 | 91成人在线网站 | 亚洲久久视频 | 日韩三级视频在线观看 | bbw av| 国产精品麻豆视频 | 国产精品一区二区在线免费观看 | 天天操天天插 | 亚洲jizzjizz日本少妇 | 国产精品九九九九九 | 中文字幕在线看视频国产中文版 | 久久女同性恋中文字幕 | 亚洲精品免费在线播放 | 久草国产在线观看 | 亚洲精品免费观看视频 | 久久久91精品国产 | 日韩欧美成人网 | 91麻豆网站| 国产精品自产拍在线观看桃花 | 91爱爱网址| 91九色视频导航 | 国产99自拍 | 新版资源中文在线观看 | 1024久久 | 国内精品国产三级国产aⅴ久 | 免费在线观看午夜视频 | 国产无吗一区二区三区在线欢 | 97精产国品一二三产区在线 | 在线探花| 97在线精品 | 婷婷香蕉 | 成人免费在线观看av | 天天色天天综合 | 亚洲欧美国产视频 | 成人国产电影在线观看 | 亚洲激情视频在线观看 | 四虎影视精品永久在线观看 | 国产高清视频免费在线观看 | 欧美日韩在线播放 | 99视频在线精品免费观看2 | 五月激情丁香图片 | 99在线视频观看 | 久草网免费 | 一本一道波多野毛片中文在线 | 久久综合久久久 | 一区二区三区中文字幕在线观看 | 激情影院在线 | 九九九热精品免费视频观看 | 九月婷婷人人澡人人添人人爽 | 久久精品国产美女 | 中文字幕乱码日本亚洲一区二区 | 婷婷综合视频 | 国内精品久久久久久久影视麻豆 | 日韩精品免费一区二区 | 国产123区在线观看 国产精品麻豆91 | 中文字幕 在线 一 二 | 97夜夜澡人人爽人人免费 | 久久久久久综合网天天 | 亚洲天天摸日日摸天天欢 | 欧美另类调教 | 99久久www | 色吊丝在线永久观看最新版本 | 亚洲国产日韩av | 久久免费a | 9999亚洲| 日韩色在线 | 久久久久成人免费 | 美腿丝袜av | 夜夜躁日日躁狠狠躁 | 免费99| 久久免费一级片 | 中文字幕免费观看 | 色综合天天色综合 | 成人免费观看完整版电影 | 91精品亚洲影视在线观看 | 九九免费观看全部免费视频 | 午夜精品成人一区二区三区 | 国产高清第一页 | 日韩精品视 | 久保带人 | 美国人与动物xxxx | 亚洲91av | 91视频中文字幕 | 免费视频在线观看网站 | 在线看不卡av | 97人人模人人爽人人喊网 | 成在人线av | 欧美日韩国产一区二 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 亚洲免费高清视频 | 免费看一及片 | 在线日韩av | 久久精品香蕉 | 午夜少妇一区二区三区 | 久草网在线视频 | 婷婷六月丁 | 久草干| 黄p网站在线观看 | 好看的国产精品视频 | 人人爽人人爽人人片 | 天天伊人狠狠 | 国产看片免费 | 人人藻人人澡人人爽 | 久久综合久久综合九色 | 亚洲a在线观看 | 久久精品99久久久久久 | 久久免费视频一区 | 午夜精品久久久久久久99无限制 | 天天鲁天天干天天射 | 国产精品中文字幕在线观看 | 国产精品网红福利 | 欧美日韩在线观看一区二区三区 | 日韩免费电影在线观看 | 欧美性极品xxxx做受 | 免费观看av网站 | 又黄又爽又刺激的视频 | 91视频在线免费观看 | 爱爱av在线 | 91精品国产三级a在线观看 | 国产一区二区精品久久91 | 国产精品永久免费在线 | 亚州精品天堂中文字幕 | 国产免码va在线观看免费 | 天天综合天天做 | 久视频在线播放 | 国产视频首页 | 久草在线免费资源站 | 午夜久久视频 | 色婷婷狠狠 | 久久 亚洲视频 | 免费看色的网站 | 欧美一区免费观看 | 亚洲精品国产品国语在线 | 色在线观看网站 | 91视频高清免费 | 欧美日韩亚洲在线 | 日韩精品一区二区三区第95 | 色婷婷国产精品一区在线观看 | 在线观看mv的中文字幕网站 | 去干成人网 | 免费成人黄色av | 国产一区二区在线播放视频 | 天天操·夜夜操 | 久久dvd| 97精品一区二区三区 | 欧美怡红院视频 | 最新av观看 | av观看在线观看 | 日本h在线播放 | 日韩毛片在线一区二区毛片 | 探花视频在线版播放免费观看 | 一区在线观看 | 高清av网 | 在线国产高清 | 91在线超碰| 中文字幕精品三级久久久 | 一区二区三区国产欧美 | 国内精品久久久久久久影视简单 | 久久久www成人免费精品 | 国产精品久久久久久久久岛 | 国产精品理论在线观看 | 精品亚洲免费视频 | 9在线观看免费高清完整 | 在线v| 91视频在线自拍 | 天天操天天谢 | 精品九九九 | 91久久精品日日躁夜夜躁国产 | 久久999精品| 五月天色中色 | 久草在线电影网 | 99久久精品视频免费 | 精品国产1区2区3区 国产欧美精品在线观看 | 国产亚洲人成网站在线观看 | 国产一区精品在线观看 | 最新日韩在线 | 久久国产免费视频 | 国产视频精品网 | 色综合天天射 | 黄色一级影院 | 欧美亚洲国产一卡 | 综合国产视频 | 91成人精品一区在线播放69 | 婷婷成人亚洲综合国产xv88 | 中文字幕在线高清 | 久草9视频 | 伊人午夜 | 天天se天天cao天天干 | www99久久| 在线播放视频一区 | 久久久精品国产一区二区三区 | 超碰在线天天 | 天天操天天干天天综合网 | 日本丶国产丶欧美色综合 | 97精品国产| 国产精品美女在线观看 | 激情中文字幕 | 91毛片在线观看 | 91亚洲欧美激情 | 久久成年视频 | 亚洲精品资源在线 | 国产精品久久久久三级 | 在线观看视频国产一区 | 1024在线看片 | 黄色av电影在线 | 五月激情姐姐 | 日韩色一区二区三区 | www色网站 | 99久久精品免费看国产麻豆 | 91高清视频免费 | 亚洲激情电影在线 | 正在播放国产一区二区 | 日本电影久久 | 成人91在线| 91成人免费在线视频 | 日日草天天干 | 久久精品99久久 | 天天躁天天躁天天躁婷 | 99久久99 | 中文字幕有码在线观看 | 黄色免费在线看 | 欧美日韩在线观看不卡 | 国产一区二区观看 | 亚洲一区美女视频在线观看免费 | 91精品国产麻豆 | 黄色最新网址 | 成人在线网站观看 | 国产在线播放一区二区 | av资源在线看 | 在线免费黄色片 | 免费在线91| 菠萝菠萝蜜在线播放 | 日韩一区二区三区高清在线观看 | 99免费在线视频观看 | 青青河边草观看完整版高清 | 二区视频在线 | 亚洲资源在线观看 | 久草网站在线 | 射射射av | 日韩av不卡在线 | 国产黄色av网站 | 91大片成人网 | 99久久精品免费看国产一区二区三区 | 精品亚洲免费视频 | 国产麻豆剧传媒免费观看 | 天堂av在线网站 | 激情av五月婷婷 | www视频在线观看 | 97av影院| 久久精品小视频 | 婷婷综合激情 | 日韩欧美在线一区 | 香蕉视频免费在线播放 | 综合久久婷婷 | av不卡中文字幕 | 国产精品久久99精品毛片三a | 亚洲人成影院在线 | 九九久久影院 | 国内精品久久久久久久久久清纯 | 免费看污在线观看 | 91九色视频导航 | 国产录像在线观看 | 午夜影院在线观看18 | 视频在线观看91 | 中文字幕精品视频 | 日韩色在线 | 九九热只有这里有精品 | 日韩毛片在线播放 | 午夜色性片 | 欧美婷婷综合 | 4hu视频| 国产传媒一区在线 | 在线电影91| 欧美人人 | 亚洲一片黄 | 日本午夜在线观看 | 97av影院 | 热久久影视 | 色一级片| 在线91视频 | 日日躁你夜夜躁你av蜜 | 天天爱天天射 | 制服丝袜亚洲 | 国产一区二区高清视频 | 97在线观看视频 | 婷婷日日 | 97在线公开视频 | 丁香激情综合国产 | 美女精品久久久 | 手机在线中文字幕 | 中文字幕亚洲不卡 | 国产伦理久久精品久久久久_ | 91成人在线免费观看 | av在线播放快速免费阴 | 亚洲成av人影片在线观看 | 青青河边草观看完整版高清 | 国产一区久久 | 精品亚洲网 | 9ⅰ精品久久久久久久久中文字幕 | 日日天天狠狠 | 蜜臀一区二区三区精品免费视频 | 日韩在线一级 | 狠狠干婷婷 | 成+人+色综合 | 亚洲五月六月 | www.99在线观看 | 久久久久五月天 | 久久综合精品国产一区二区三区 | 中文永久免费观看 | 天天干,天天干 | 婷婷在线免费 | 丁香高清视频在线看看 | 亚洲最大成人免费网站 | 久久99精品久久久久久 | 黄色毛片网站在线观看 | 91成人在线看 | 亚洲日本国产精品 | 日本女人在线观看 | 最近中文字幕在线中文高清版 | 成人电影毛片 | 麻豆视频免费观看 | 日p视频 | 免费在线观看日韩 | 亚洲一区免费在线 | 欧美色噜噜噜 | 午夜骚影 | 日韩免费观看视频 | 欧美一区二区精品在线 | 国产无区一区二区三麻豆 | 在线免费观看的av网站 | 婷婷综合伊人 | 国产精品乱码在线 | 欧美日韩高清国产 | 精品网站999www | 日本韩国精品在线 | 亚洲欧美日本一区二区三区 | 色av网站| 成人免费毛片aaaaaa片 | 久久精品久久精品久久精品 | 日韩在线精品视频 | 国产精品国内免费一区二区三区 | 午夜免费久久看 | 日韩一区二区三区在线看 | 激情综合色综合久久 | 亚州国产视频 | 中文字幕中文字幕在线一区 | 日韩视频二区 | 干干夜夜| 成人一区二区三区在线 | 国产精品乱码久久久 | 四虎小视频 | 免费日韩av电影 | 人人射人人插 | 久久久精品免费观看 | 一区国产精品 | 天天射综合网站 | 波多野结衣亚洲一区二区 | 最近中文字幕大全 | 国产精品18久久久久久vr | 亚洲免费av在线播放 | 日本中文字幕网 | 久久永久视频 | 国内精品久久久久 | 日韩精品网址 | 国产高清在线永久 | 一级成人免费 | 免费视频网 | 久草视频在线免费看 | 欧美analxxxx | 午夜视频黄 | 最新国产福利 | 国产免费一区二区三区最新6 | 一区二区三区在线播放 | 久久免费的视频 | 黄色软件视频大全免费下载 | 首页av在线| 国产日韩精品一区二区在线观看播放 | 成人免费视频网站在线观看 | 国产三级视频在线 | 久久新 | 欧美日韩精品区 | 在线亚洲日本 | 丁香久久久 | 五月婷婷色播 | 在线观看色网站 | 天天干天天操天天拍 | av三级在线播放 | 免费在线观看日韩视频 | 不卡中文字幕在线 | 91热精品 | 深爱激情五月网 | 超碰97在线人人 | 久久久久二区 | 美女视频黄色免费 | 国产在线观看av | 国产在线精品区 | 色综合色综合久久综合频道88 | 久久婷婷色综合 | 操操操人人 | 天天弄天天干 | 欧美国产不卡 | 日韩小视频 | a级片在线播放 | 在线视频一二区 | 色偷偷888欧美精品久久久 | 91精品久久久久久综合五月天 | 日韩欧美综合在线视频 | 夜色在线资源 | 嫩草av在线 | 久久国产精品色av免费看 | 一二区精品 | 国产精品成人a免费观看 | 在线天堂中文在线资源网 | 亚洲人毛片| 三级毛片视频 | 成人9ⅰ免费影视网站 | 免费特级黄毛片 | 天天综合网入口 | 制服丝袜欧美 | 美女黄频在线观看 | 久久精品黄 | 超碰在线中文字幕 | 色婷婷av一区二 | 久久久久久毛片精品免费不卡 | 欧美a级在线播放 | 色妞色视频一区二区三区四区 | 夜色.com | 在线观看视频亚洲 | 91久久精| 国产毛片久久 | 日韩欧美在线综合网 | 成人黄色片免费看 | 国产午夜在线观看 | 国产日韩在线播放 | 亚洲免费国产 | 亚洲精品国产精品国自产观看浪潮 | 五月婷婷视频在线 | 久久影视网| www.天天操.com | 久久久网站 | 伊人亚洲精品 | 婷婷激情网站 | 美女性爽视频国产免费app | 国产精品久久久区三区天天噜 | 伊人伊成久久人综合网小说 | 亚洲一区天堂 | 久久黄色网址 | 成人午夜毛片 | 天天色中文 | 亚洲女同ⅹxx女同tv | 91精品欧美 | 国产在线传媒 | 9在线观看免费高清完整 | 狠狠色狠狠色综合日日小说 | 成人av一级片 | 在线观看你懂的网址 | 久久视频这里有久久精品视频11 | 久久伊99综合婷婷久久伊 | 精品亚洲网 | 国产精品白浆视频 | 免费看片成年人 | 精品免费一区二区三区 | 精品久久久久久电影 | 久久久久人人 | 精品99在线视频 | 黄网站色 | 91片黄在线观 | 欧美一二三专区 | 99久久er热在这里只有精品66 | 天天艹天天爽 | 韩国av永久免费 | 欧美aaa视频 | 色九九影院 | 久久成人高清 | 成人av电影在线观看 | 国产亚洲精品久久久久久久久久久久 | 久久久精品久久日韩一区综合 | 国产精品福利一区 | 久久成 | 亚洲视频在线播放 | 中文字幕av全部资源www中文字幕在线观看 | 韩国一区视频 | 中文有码在线视频 | 超碰在线公开 | 在线影院中文字幕 | 色婷婷精品 | 欧美成年黄网站色视频 | 在线天堂中文www视软件 | 99久久久国产精品免费99 | 97色视频在线 | 欧美亚洲一区二区在线 | 五月婷婷播播 | 91亚洲免费 | 菠萝菠萝蜜在线播放 | 欧美成人va| 成人毛片在线观看视频 | 天天操天 | 天天干天天草天天爽 | 97超碰中文字幕 | 亚洲乱亚洲乱亚洲 | 在线看片a| 99精品在线视频播放 | 国内精品久久影院 | 97在线精品国自产拍中文 | 美国人与动物xxxx | 久草在线免费资源 | 免费一级日韩欧美性大片 | 国产精品亚洲综合久久 | 最近日本字幕mv免费观看在线 | 久久精品一区二区三 | 黄色三级视频片 | 日日草天天干 | 丁香婷婷在线观看 | 在线免费观看羞羞视频 | 成人久久18免费网站 | 日本公妇在线观看 | 成年人在线看视频 | 精品超碰 | 不卡电影一区二区三区 | 国产精品爽爽爽 | 欧美伦理电影一区二区 | 精品国产片| 婷婷伊人综合亚洲综合网 | 99免费在线播放99久久免费 | 国产极品尤物在线 | av线上看 | 国产精品9999久久久久仙踪林 | 精品久久久久免费极品大片 | 国产高清视频 | 午夜电影久久久 | 欧美精品免费在线 | 99精品在线免费 | 午夜影院先 | 久碰视频在线观看 | 91亚洲精品久久久蜜桃 | 久久影院中文字幕 | 网站在线观看日韩 | 久久噜噜少妇网站 | 日韩在线视频播放 | 国产福利91精品一区二区三区 | 91麻豆产精品久久久久久 | 99免费看片 | 国产糖心vlog在线观看 | 精品视频在线视频 | 日韩高清久久 | 蜜臀久久99精品久久久无需会员 | 操操操影院 | 国产视频一区在线 | 黄色aaa毛片 | 97av视频在线观看 | 国产精品麻豆99久久久久久 | 国产美女网站在线观看 | 免费a v观看 | 天天操天天添天天吹 | 国产精品区一区 | 天天草天天摸 | 日韩最新av在线 | 天天射天天干天天爽 | 国产精品美女999 | 国产精品久久久久久久久岛 | 国产成人一区二区三区在线观看 | 久草国产视频 | 伊甸园永久入口www 99热 精品在线 | a在线一区 | 久保带人| 五月天国产精品 | 中文字幕韩在线第一页 | 亚洲精品在线免费看 | 狠狠地操 | 亚洲视频在线观看 | 最近日本mv字幕免费观看 | 久久夜色精品国产欧美乱极品 | 国产精品一二 | 久久久99精品免费观看乱色 | 香蕉视频一级 | 玖玖爱在线观看 | 天天性天天草 | 久久国产精品一区二区三区 | 四虎影视精品 | 西西人体4444www高清视频 | 九九免费视频 | 国产精品区在线观看 | 视频在线99re| 免费观看高清 | 欧美日韩高清国产 | 丝袜精品视频 | 中文字幕在线观看第三页 | 成人av一区二区兰花在线播放 | 日本精品久久久久 | 成人a在线| 日本xxxx.com | 丁香六月婷婷开心 | 中文字幕精 | 亚洲国产日韩欧美 | 国产精品入口麻豆www | 综合久久综合久久 | 久久夜色精品国产欧美乱 | 久久高清国产 | 日韩av免费在线电影 | 欧美日韩免费一区二区三区 | 国产精品久久久久永久免费观看 | 久久久久久久久艹 | 国产在线视频在线观看 | 欧洲高潮三级做爰 | 成人影片在线播放 | 一区二区三区视频网站 | 国内丰满少妇猛烈精品播 | 精品亚洲在线 | 国产一区二区三区视频在线 | 亚洲精品乱码久久久久久蜜桃91 | 激情伊人五月天久久综合 | 又黄又刺激又爽的视频 | 欧美资源在线观看 | 亚洲aⅴ一区二区三区 | 最近日本mv字幕免费观看 | 中文有码在线 | 日韩午夜精品福利 | 天天操天天爽天天干 | 丁香花在线视频观看免费 | 性色av免费观看 | 国产日韩欧美自拍 | 久草网视频 | 精品国产一区二区三区不卡 | av 一区二区三区 | 最新极品jizzhd欧美 | 国产精品久久久久久久久久久久午夜 | 国产婷婷一区二区 | 在线激情网 | 亚洲综合欧美激情 | japanesefreesexvideo高潮 | 97超碰国产在线 | 久久久精品网站 | 国产成人亚洲在线观看 | 一区二区视频电影在线观看 | 国产精品999久久久 久产久精国产品 | 国产 视频 久久 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 国产高清免费av | 91av影视 | www.色的| 91爱爱中文字幕 | 九九免费观看视频 | 一区二区视频欧美 | 狠狠精品| 日韩欧美视频免费看 | 国产精品第一 | 日本少妇高清做爰视频 | 久草在线手机观看 | 精品国产乱码一区二区三区在线 | 一区二区三区在线看 | 激情五月婷婷激情 | 成人av在线播放网站 | 精品一区免费 | 免费一级片在线 | 99久久99视频只有精品 | 久久国产精品影片 | 天天干天天操天天做 | 99九九99九九九视频精品 | 黄色av网站在线观看 | 又爽又黄又无遮挡网站动态图 | 香蕉成人在线视频 | 九九九热精品免费视频观看 | 国产第一页在线播放 | 精品欧美一区二区精品久久 | 99国产视频 | 日韩中文字| 国产乱对白刺激视频在线观看女王 | 久久99国产精品 | 国产永久免费高清在线观看视频 | 久热色超碰 | 操操综合网 | 欧美性生活大片 | 黄色一级在线视频 | 中文字幕日本在线 | 国产精品综合久久 | 久久婷婷国产 | 成人a大片 | 亚洲精品国精品久久99热一 | 毛片3| 综合色中文| 亚洲精品小视频在线观看 | 日韩欧美精品在线视频 | 色婷婷亚洲综合 | 免费黄色av电影 | 精品国产一区二区在线 | av资源在线观看 | 久久精品99国产精品日本 | 日韩美av在线 | 亚洲一区网站 | 国产精品不卡av | 久久不卡日韩美女 | 99精品免费在线观看 | 欧美在线观看视频 | 国产精品福利无圣光在线一区 | adn—256中文在线观看 | 亚洲二区精品 | 日韩视频专区 | 日韩一二三区不卡 | 天天干夜夜| 亚洲aⅴ乱码精品成人区 | 人人艹视频 | 国产久草在线观看 | 麻豆视频在线看 | 亚洲国产三级在线 | 国内亚洲精品 | 日本在线观看视频一区 | 久久麻豆精品 | 国产精品a久久久久 | 久久人人爽人人爽 | 久久午夜色播影院免费高清 | 婷婷六月丁| 天天干夜夜夜 | 91九色蝌蚪| 精品久久久久久久久中文字幕 | 久久99日韩 | 国语精品视频 | 特级西西444www高清大视频 | 国产中文字幕一区 | 在线播放 亚洲 | 一区二区中文字幕在线播放 | www五月天婷婷 | 三级av中文字幕 | 国产成人av网址 | 日韩欧美在线国产 | 日韩影片在线观看 | 一区二区在线不卡 | 天天躁天天躁天天躁婷 | 中文字幕乱码亚洲精品一区 | 激情欧美xxxx| 成人高清av在线 | 亚洲成熟女人毛片在线 | 欧美黑人性猛交 | 韩国av免费看 | 日日操夜 | 免费观看完整版无人区 | 国产精品亚洲片在线播放 | 99视频+国产日韩欧美 | 超碰夜夜| 色中色亚洲 | 久久99九九99精品 | 色婷婷综合视频在线观看 | 天天天天天天天天操 | 国产欧美三级 | 亚洲爱av| 亚洲精品在线观看视频 | 99热精品视| 久久超 | 久草在线资源观看 | 国产成人在线一区 | 天堂中文在线播放 | 亚洲mv大片欧洲mv大片免费 | 视频精品一区二区三区 | 五月综合色婷婷 | 精品视频99 | 欧美地下肉体性派对 | 日韩欧美视频在线观看免费 | 国产视频18 | 日韩 在线a | 91影视成人 | 在线天堂中文在线资源网 | 久久日韩精品 | 久久精品久久精品 | 伊人天天色| 国产精品电影一区 | 99视频在线免费看 | 日韩欧美专区 | 成年人免费在线看 | zzijzzij日本成熟少妇 | 狠狠躁夜夜躁人人爽视频 | 国产伦理一区二区三区 | 久久怡红院| 免费一级片久久 | 国产中文字幕视频 | 三级黄色三级 | 成人黄色小说视频 | 国产色视频网站2 | 欧美一区二区三区四区夜夜大片 | 国产精品欧美一区二区三区不卡 | 免费国产黄线在线观看视频 | 亚洲一区日韩 | 婷婷丁香九月 | 天天爽夜夜爽人人爽一区二区 | 日韩精品不卡 | 天天干,狠狠干 | 日韩丝袜在线观看 | 偷拍精品一区二区三区 | 国产又粗又猛又黄视频 | 亚洲人成人天堂h久久 | 国产色影院 | 四虎国产精品成人免费4hu | 九九热免费在线视频 | 77国产精品| av 一区 二区 久久 | 在线观看免费高清视频大全追剧 | 99婷婷狠狠成为人免费视频 | 成人av免费播放 | 亚洲天天干 | 国产中文字幕精品 | 欧美性春潮 | 午夜在线日韩 | 国产福利91精品一区二区三区 | 亚洲日本va午夜在线电影 | 在线亚洲欧美日韩 | www免费黄色 | 亚洲精品一区二区三区高潮 | 六月色婷 | 精品主播网红福利资源观看 | 日韩在线免费 | 四虎国产精品免费 | 欧美aaaxxxx做受视频 | 97人人澡人人爽人人模亚洲 | 国产精品一区二区三区99 | 亚洲一区二区天堂 | 久久精品中文字幕少妇 | 色婷婷国产精品一区在线观看 | 国产vs久久 | 精品亚洲免费 | 91麻豆精品国产91久久久更新时间 | 手机av片 | 久久久久久久国产精品 | 天天艹天天爽 | 97精品在线观看 | 日日操网 | 欧美了一区在线观看 | 欧美污网站 | 久久怡红院 | 91网在线观看 | 91在线看视频 | 国产系列精品av | 亚洲观看黄色网 | 99福利片 | 一级片视频在线 | 在线电影 一区 | 不卡国产在线 | 欧美一区二区三区激情视频 | 91九色性视频 | 麻豆果冻剧传媒在线播放 | 操操综合网 | 综合久久久久久 | 91av播放| 国产精品99久久久久久宅男 | 黄色h在线观看 | 国产超碰在线观看 | 国产午夜三级一区二区三 | 色播六月天 | 国产日韩欧美在线观看 | 天堂视频一区 | 天天操天天干天天插 | 久久久久国产精品厨房 | 日韩色爱 | 国产精品中文久久久久久久 | 91麻豆精品国产91久久久无限制版 | 国产色小视频 | 国产一区二区影院 | 国产婷婷精品av在线 | 亚洲免费激情 | 久久成人黄色 | 人人射人人| 伊人激情网 | 日本性生活一级片 | 最新中文字幕在线资源 | 夜夜操天天干 | 91免费国产在线观看 | 亚洲成a人片77777kkkk1在线观看 | 精选久久 | 午夜久久久久久久久久影院 | www黄| 国产小视频你懂的 | 国产亚洲激情视频在线 | 精品一区 在线 | 视频成人永久免费视频 | 日韩一级精品 | 久久久在线 | 在线观看视频黄色 | 亚洲男模gay裸体gay | 天天色成人 | 91精品视频免费 | 国产最新福利 | 久久久久久久网站 | 精品久久电影 | 天天干夜夜爽 | 最近的中文字幕大全免费版 | 天堂网一区二区 | 日韩高清在线一区 | 免费看色网站 | 91网页版在线观看 |