在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

30條有效使用STL的經(jīng)驗(yàn)

Linux愛好者 ? 來(lái)源:Linux愛好者 ? 作者:Linux愛好者 ? 2022-06-07 11:41 ? 次閱讀

最近看了一本書《Effective STL》,這本書內(nèi)容比較老,但里面很多內(nèi)容還是值得我們學(xué)習(xí)的。書里一共有50條有效使用STL的經(jīng)驗(yàn),這里整理出了30條自認(rèn)為有用的條目分享給大家,希望對(duì)大家有所幫助,想了解具體內(nèi)容的的朋友可以直接去看書哈。

以下是干貨:

1.慎重選擇STL容器類型

a)確保自己了解每個(gè)容器的使用場(chǎng)景,特定的場(chǎng)景選擇合適的容器類型

b)連續(xù)內(nèi)存,支持下標(biāo)訪問(wèn),可考慮選擇vector

c)頻繁的在中間做插入或者刪除操作,可考慮選擇list

d)兩者都有,可考慮使用deque

2.不要試圖編寫?yīng)毩⒂谌萜黝愋偷拇a

a)不同容器有不同的成員函數(shù),想獨(dú)立于容器類型,只能取它們的交集

b)然而,取交集意義不大

3.確保容器中的對(duì)象拷貝正確而高效

a)大家應(yīng)該都知道,容器中存放的都是對(duì)象的拷貝,想要拷貝正確那就實(shí)現(xiàn)拷貝構(gòu)造函數(shù)和拷貝賦值運(yùn)算符

b)想要更高效,可以使容器包含指針而不是對(duì)象,也可考慮智能指針

4.調(diào)用empty而不是檢查size()是否為0

a)empty對(duì)所有的標(biāo)準(zhǔn)容器都是常數(shù)時(shí)間操作,而對(duì)一些list實(shí)現(xiàn),size耗費(fèi)線性時(shí)間

5.區(qū)間成員函數(shù)優(yōu)先于與之對(duì)應(yīng)的單元素成員函數(shù)

a)寫起來(lái)更方便,代碼更少

b)更能清晰的表達(dá)意圖

c)有些情況下可能更高效

6.如果容器中包含了通過(guò)new操作創(chuàng)建的指針,切記在容器對(duì)象析構(gòu)前將指針delete

a)其實(shí)就是為了避免資源泄漏

b)可以考慮在容器中存儲(chǔ)shared_ptr

7.慎重選擇刪除元素的方法

a)要?jiǎng)h除容器中有特定值的所有對(duì)象

i.如果容器是vector、string或deque,則使用erase-remove習(xí)慣用法

ii.如果容器是list,則使用list::remove

iii.如果容器是一個(gè)標(biāo)準(zhǔn)關(guān)聯(lián)容器,則使用它的erase成員函數(shù)

b)要?jiǎng)h除容器中滿足特定條件的所有對(duì)象

i.如果容器是vector、string或deque,則使用erase-remove_if習(xí)慣用法

ii.如果容器是list,則使用list::remove_if

iii.如果容器是一個(gè)標(biāo)準(zhǔn)關(guān)聯(lián)容器,則使用remove_copy_if和swap,或者寫一個(gè)循環(huán)來(lái)遍歷容器中的元素,記住當(dāng)把迭代器傳給erase時(shí),要對(duì)它進(jìn)行后綴遞增

c)要在循環(huán)內(nèi)部做某些操作

i.如果容器是一個(gè)標(biāo)準(zhǔn)序列容器,則寫一個(gè)循環(huán)來(lái)遍歷容器中的元素,記住每次調(diào)用erase時(shí),要用它的返回值更新迭代器

ii.如果容器是一個(gè)標(biāo)準(zhǔn)關(guān)聯(lián)容器,則寫一個(gè)循環(huán)來(lái)遍歷容器中的元素,記住當(dāng)把迭代器傳給erase時(shí),要對(duì)迭代器做后綴遞增。

d)返回值更新迭代器示例

for(autoi=c.begin();i!=c.end();){
if(xxx){
i=c.erase(i);
}
else++i;
}

e)迭代器后綴遞增示例

for(autoi=c.begin();i!=c.end();){
if(xxx){
c.erase(i++);
}
else++i;
}

f)(!!!)現(xiàn)在可以統(tǒng)一使用返回值更新迭代器方式

8.切勿對(duì)STL容器的線程安全性有不切實(shí)際的依賴

a)書中原話是:當(dāng)涉及STL容器和線程安全性時(shí),你可以指望一個(gè)STL庫(kù)允許多個(gè)線程同時(shí)讀一個(gè)容器,以及多個(gè)線程對(duì)不同的容器做寫入操作。你不能指望STL庫(kù)會(huì)把你從手工同步控制中解脫出來(lái),而且你不能依賴于任何線程支持。

b)原文磨磨唧唧的,我就可以理解為STL不支持線程安全,想要線程安全,那自己加鎖就完事兒了。

9.vector等容器考慮使用reserve來(lái)避免不必要的重新分配

a)這種動(dòng)態(tài)擴(kuò)容的容器每次擴(kuò)容都會(huì)大體經(jīng)歷4步:

i.分配一塊大小為當(dāng)前容量的某個(gè)倍數(shù)的新內(nèi)存。大多數(shù)實(shí)現(xiàn)中,vector和string的容器每次以2的倍數(shù)增長(zhǎng)

ii.把容器的所有元素從舊的內(nèi)存移動(dòng)或者拷貝到新的內(nèi)存中

iii.如果有拷貝,析構(gòu)掉舊內(nèi)存中的對(duì)象

iv.如果有拷貝,釋放舊內(nèi)存

b)明確size()、capacity()、resize()、reserve()四個(gè)成員函數(shù)的具體含義

c)reserve能使重新分配的次數(shù)減少到最低限度,避免重新分配和迭代器失效帶來(lái)的開銷,兩種方式:

i.若能明確知道或預(yù)計(jì)容器最終有多少元素,可使用reverse,預(yù)留適當(dāng)大小的空間

ii.先預(yù)留足夠大的空間,然后,當(dāng)把所有數(shù)據(jù)都加入以后,再去除多余的空間。

10.使用swap技巧除去多余的容量

a)vector().swap(a)

b)a.clear()

c)以上兩種都是清空容器的方法,swap相對(duì)于clear一般更合適一些

11.避免使用vector存儲(chǔ)bool

a)有兩點(diǎn):

i.它不是一個(gè)STL容器,不能取元素的地址

ii.它不存儲(chǔ)bool

b)可以用deque和bitset來(lái)替代

12.理解相等和等價(jià)的區(qū)別

a)相等的概念基于operator==,即a==b,則為相等

b)如果!(a < b) && !(b < a),則為等價(jià)

13.為包含指針的關(guān)聯(lián)容器指定比較類型

a)容器里面存儲(chǔ)的都是指針,但是由于是關(guān)聯(lián)容器,需要進(jìn)行比較,但默認(rèn)的比較(比較指針)一般不是我們想要的行為

b)所以需要指定比較類型,自定義比較行為

14.總是讓比較函數(shù)在等值情況下返回false

a)直接看這個(gè)文章吧【線上問(wèn)題】P1級(jí)公司故障,年終獎(jiǎng)不保,很不錯(cuò)

15.切勿直接修改set或multiset中的鍵

a)如果改變了鍵,那么可能破壞該容器(順序),再使用該容器可能導(dǎo)致不確定的結(jié)果

b)為什么標(biāo)題是切勿修改set,而不是切勿修改map中的鍵呢?

i.因?yàn)閙ap中的鍵是const K,本來(lái)就不允許修改

16.考慮用排序的vector替代關(guān)聯(lián)容器

a)在排序的vector中存儲(chǔ)數(shù)據(jù)可能比在標(biāo)準(zhǔn)關(guān)聯(lián)容器中存儲(chǔ)同樣的數(shù)據(jù)要耗費(fèi)更少的內(nèi)存。

b)由于Page Fault,通過(guò)二分搜索來(lái)查找一個(gè)排序的vector可能比查找一個(gè)標(biāo)準(zhǔn)關(guān)聯(lián)容器要更快一些

c)對(duì)于排序的vector,最不利的地方在于它必須保持有序,這對(duì)vector來(lái)說(shuō),代價(jià)是很高的。所以,在查找操作幾乎從不跟插入刪除操作混在一起時(shí),使用排序的vector才更合適。

17.當(dāng)效率至關(guān)重要時(shí),請(qǐng)?jiān)趍ap::operator[]與map::insert之間謹(jǐn)慎做出選擇

a)當(dāng)向map中添加元素時(shí),優(yōu)先選用insert而不是operator[]

b)當(dāng)更新map中的值時(shí),優(yōu)先選用operator[]

18.iterator優(yōu)先于const_iterator、reverse_iterator、const_reverse_iterator

a)盡量用iterator來(lái)代替const或reverse型的迭代器

b)iterator相對(duì)于其它更加實(shí)用

c)很多參數(shù)都是iterator,很少有其它

19.使用distance和advance將容器的const_iterator轉(zhuǎn)換成iterator

Containerd;
ConstIterci;
Iteri(d.begin());
advance(i,distance(i,ci));

20.對(duì)于逐個(gè)字符的輸入, 請(qǐng)考慮使用istreambuf_iterator

a)istreambuf_iterator性能一般優(yōu)于istream_iterator

b)istreambuf_iterator不會(huì)跳過(guò)任何字符

istreaminputFile("xxx.txt");
stringstr(istreambuf_iterator(inputFile),istreambuf_iterator());

21.容器的插入, 要確保目標(biāo)空間足夠大

a)靈活使用reverse和back_inserter、front_inserter和inserter返回的迭代器。

22.了解各種與排序有關(guān)的選擇

a)重點(diǎn)關(guān)注以下幾項(xiàng):

i.partial_sort

ii.nth_element

iii.stable_sort

iv.sort

v.partition

vi.stable_partition

b)對(duì)排序算法的選擇應(yīng)該更多地基于所需要完成的功能,而不是算法的性能

c)總結(jié):

i.如果需要對(duì)vector、string、deque或者數(shù)組中的元素執(zhí)行一次完全排序,那可以使用sort或者stable_sort

ii.如果有一個(gè)vector、string、deque或者數(shù)組,并且只需要對(duì)等價(jià)性最前面的n個(gè)元素進(jìn)行排序,那可以使用partial_sort

iii.如果有一個(gè)vector、string、deque或者數(shù)組,并且需要找到第n個(gè)位置上的元素,或者,需要找到等價(jià)性最前面的n個(gè)元素但又不必對(duì)這n個(gè)元素進(jìn)行排序,那么,nth_element正是所需要的函數(shù)

iv.如果需要將一個(gè)標(biāo)準(zhǔn)序列容器中的元素按照是否滿足某個(gè)特定的條件區(qū)分開來(lái),那么,partition和stable_partition可能正是你所需要的

v.如果你的數(shù)組在一個(gè)list中,那么你仍然可以調(diào)用partition和stable_partition算法,可以用list::sort來(lái)替代sort和stable_sort算法。

23.如果確實(shí)需要?jiǎng)h除元素,則需要在remove這一類算法之后調(diào)用erase

a)erase-remove這塊應(yīng)該大家都知道

b)list是個(gè)例外,list的remove就是erase

c)remove指針時(shí)注意釋放掉對(duì)應(yīng)的內(nèi)存,防止內(nèi)存泄漏

24.了解哪些算法使用排序的區(qū)間作為參數(shù)

a)某些算法為了性能考慮,需要使用排序的區(qū)間作為參數(shù)

b)如果傳遞了沒(méi)有排序的區(qū)間進(jìn)去,會(huì)導(dǎo)致錯(cuò)誤的結(jié)果

c)要求排序區(qū)間的STL算法:

i.binary_search

ii.lower_bound

iii.upper_bound

iv.equal_range

v.set_union

vi.set_intersection

vii.set_difference

viii.set_symmetric_difference

ix.merge

x.inplace_merge

xi.includes

d)下面的算法不一定要求排序區(qū)間,但通常和排序區(qū)間一起使用

i.unique

ii.unique_copy

25.通過(guò)mismatch或lexicographical_compare實(shí)現(xiàn)簡(jiǎn)單的忽略大小寫的字符串比較

a)mismatch或lexicographical_compare更通用

b)但strcmp在處理長(zhǎng)字符串時(shí)可能更高效

26.使用accumulate或者for_each進(jìn)行區(qū)間統(tǒng)計(jì)

a)accumulate會(huì)計(jì)算出一個(gè)區(qū)間的統(tǒng)計(jì)信息

b)for_each是對(duì)一個(gè)區(qū)間的每個(gè)元素做一個(gè)操作

27.算法調(diào)用優(yōu)先于手寫的循環(huán)

a)大多數(shù)情況下,標(biāo)準(zhǔn)的STL肯定比我們自己手寫的好一些,包括正確性以及性能和可維護(hù)性方面

b)比如:

i.min_element

ii.accumulate

iii.partition

iv.find

v.find_if

vi.for_each

vii.erase-remove

viii.transform

28.容器的成員函數(shù)優(yōu)先于同名的算法

a)關(guān)聯(lián)容器提供了count、find、lower_bound、upper_bound、equal_range

b)list提供了remove、remove_if、unique、sort、merge、reverse

c)有兩個(gè)原因:

i.成員函數(shù)通常與容器(特別是關(guān)聯(lián)容器)結(jié)合得更加緊密

ii.成員函數(shù)往往速度更快

29.正確區(qū)分count、find、binary_search、lower_bound、upper_bound、equal_range

b39963c0-e484-11ec-ba43-dac502259ad0.png

30.考慮使用函數(shù)對(duì)象而不是函數(shù)作為STL算法的參數(shù)

a)現(xiàn)在一般都是使用lambda表達(dá)式作為STL算法參數(shù)

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    504

    瀏覽量

    22327
  • STL
    STL
    +關(guān)注

    關(guān)注

    0

    文章

    86

    瀏覽量

    18656
  • 迭代器
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    4428

原文標(biāo)題:Effective STL, 30 條有效使用 STL 的經(jīng)驗(yàn)

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    簡(jiǎn)述電源設(shè)計(jì)經(jīng)驗(yàn)技巧

    在電源設(shè)計(jì)領(lǐng)域中,經(jīng)驗(yàn)的積累往往決定了產(chǎn)品的穩(wěn)定性和可靠性。若是電子新人了解到一些實(shí)用的設(shè)計(jì)技巧,電源設(shè)計(jì)將事半功倍。下面將總結(jié)大佬的14電源設(shè)計(jì)經(jīng)驗(yàn),以此提供參考和指導(dǎo)。
    的頭像 發(fā)表于 04-23 09:26 ?218次閱讀

    光纖怎么分兩

    光纖可以通過(guò)以下方式分成兩使用: 使用分光器 分光器是一種光學(xué)器件,它可以將光信號(hào)按照一定的比例分成多路。通常,分光器有1:2、1:4、1:8等不同的分光比例,這意味著一根光纖輸入的光信號(hào)可以
    的頭像 發(fā)表于 02-25 10:07 ?820次閱讀

    STM32串口接受中斷使用C++STL中的queue導(dǎo)致所有中斷失效

    heap4.c中的pvPortMalloc重載new和定義了內(nèi)存分配器OSAllocator(下附源碼),目的是使用STL庫(kù)時(shí)用FreeRTOS托管內(nèi)存 單片機(jī)啟動(dòng)文件中Heap_Size設(shè)置為0
    發(fā)表于 01-24 10:21

    電子工程師的經(jīng)驗(yàn)分享

    電子工程師在實(shí)際工作中積累了豐富的經(jīng)驗(yàn),這些經(jīng)驗(yàn)對(duì)于新手工程師和電子專業(yè)的學(xué)生具有重要的參考價(jià)值。 一、電路設(shè)計(jì)經(jīng)驗(yàn) 電路設(shè)計(jì)核心思想 電路設(shè)計(jì)的核心在于理解電路的基本原理和功能需求。在設(shè)計(jì)電路
    的頭像 發(fā)表于 01-14 10:14 ?416次閱讀

    兆易創(chuàng)新再次獲得TüV萊茵STL功能安全認(rèn)證

    兆易創(chuàng)新GigaDevice(股票代碼 603986)今日宣布,其GD32F30x STL軟件測(cè)試庫(kù)獲得了德國(guó)萊茵TüV(以下簡(jiǎn)稱“TüV萊茵”)頒發(fā)的IEC 61508 SC3(SIL 2/SIL
    的頭像 發(fā)表于 10-17 09:49 ?920次閱讀

    風(fēng)扇驅(qū)動(dòng)一體控制器的燈是直流電還是交流電

    的電壓和電流相對(duì)穩(wěn)定,有助于LED燈等照明設(shè)備保持穩(wěn)定的發(fā)光效果,減少閃爍和光衰現(xiàn)象。 效率 :直流電在傳輸過(guò)程中能量損失較小,能夠更有效地驅(qū)動(dòng)LED燈等照明設(shè)備,提高能源利用效率。 安全性 :直流電相對(duì)于交流電來(lái)說(shuō),在人體
    的頭像 發(fā)表于 09-23 14:40 ?515次閱讀

    內(nèi)存接觸不良會(huì)導(dǎo)致哪些情況

    內(nèi)存接觸不良是一種常見的計(jì)算機(jī)故障,它可能會(huì)導(dǎo)致多種問(wèn)題,影響計(jì)算機(jī)的正常運(yùn)行。本文將詳細(xì)介紹內(nèi)存接觸不良可能導(dǎo)致的各種情況,以及如何診斷和解決這些問(wèn)題。 計(jì)算機(jī)無(wú)法啟動(dòng) 內(nèi)存接觸不良最明顯
    的頭像 發(fā)表于 09-02 14:36 ?3742次閱讀

    【AWTK使用經(jīng)驗(yàn)】如何實(shí)現(xiàn)序列幀動(dòng)畫

    AWTK是基于C語(yǔ)言開發(fā)的跨平臺(tái)GUI框架。《AWTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過(guò)程中一些常見問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度?這些都會(huì)在系列文章進(jìn)行解答。假設(shè)
    的頭像 發(fā)表于 07-18 08:25 ?662次閱讀
    【AWTK使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何實(shí)現(xiàn)序列幀動(dòng)畫

    【AWTK使用經(jīng)驗(yàn)】如何播放視頻或攝像頭畫面

    AWTK是基于C語(yǔ)言開發(fā)的跨平臺(tái)GUI框架。《AWTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過(guò)程中一些常見問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度?這些都會(huì)在系列文章進(jìn)行解答。假設(shè)
    的頭像 發(fā)表于 07-04 08:25 ?1086次閱讀
    【AWTK使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何播放視頻或攝像頭畫面

    《軟件開發(fā)珠璣》+60戒律

    《軟件開發(fā)珠璣》+60戒律 感謝電子發(fā)燒友社區(qū)活動(dòng)提供的讀書機(jī)會(huì)。 收到這本書后,看了劉總的簽字,終于看懂了上面的字“電子發(fā)燒友社區(qū)活動(dòng)”后面一個(gè)字,實(shí)在猜不出來(lái)。 本書經(jīng)驗(yàn)教訓(xùn)60,發(fā)現(xiàn)踩坑掉
    發(fā)表于 06-24 19:27

    【AWTK使用經(jīng)驗(yàn)】如何添加中文輸入法

    AWTK是基于C語(yǔ)言開發(fā)的跨平臺(tái)GUI框架。《AWTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過(guò)程中一些常見問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度?這些都會(huì)在系列文章進(jìn)行解答。假設(shè)
    的頭像 發(fā)表于 06-20 08:25 ?1354次閱讀
    【AWTK使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何添加中文輸入法

    【AWTK使用經(jīng)驗(yàn)】如何響應(yīng)物理按鍵

    AWTK是基于C語(yǔ)言開發(fā)的跨平臺(tái)GUI框架。《AWTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過(guò)程中一些常見問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度?這些都會(huì)在系列文章進(jìn)行解答。在
    的頭像 發(fā)表于 06-06 08:25 ?1016次閱讀
    【AWTK使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何響應(yīng)物理按鍵

    名單公布!【書籍評(píng)測(cè)活動(dòng)NO.33】做了50年軟件開發(fā),總結(jié)出60經(jīng)驗(yàn)教訓(xùn),每一都太扎心!

    的60 經(jīng)驗(yàn)教訓(xùn) ,分為 6 個(gè)領(lǐng)域,每個(gè)領(lǐng)域占用 1 章的篇幅。 所有的這 60 經(jīng)驗(yàn)教訓(xùn)都會(huì)收錄在附錄中,以便大家參考。 我并沒(méi)有想著給大家提供一份這 6 個(gè)領(lǐng)域大而全的
    發(fā)表于 05-17 14:36

    8輸入正NAND門SN54ALS30A SN54AS30 SN74ALS30A SN74AS30數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《8輸入正NAND門SN54ALS30A SN54AS30 SN74ALS30A SN74AS30數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-14 10:54 ?0次下載
    8輸入正NAND門SN54ALS<b class='flag-5'>30</b>A SN54AS<b class='flag-5'>30</b> SN74ALS<b class='flag-5'>30</b>A SN74AS<b class='flag-5'>30</b>數(shù)據(jù)表

    STM32使用stemwin中的listview,如何加listview寬水平和垂直的滾動(dòng)

    (hItem,1); LISTVIEW_SetFixed(hItem,2); LISTVIEW_SetFixed(hItem,3); 問(wèn)題二:如何加listview寬水平和垂直的滾動(dòng),像圖3DROPDOWN一樣寬的下拉滾動(dòng) 我嘗試過(guò)改變數(shù)據(jù)字體,但沒(méi)
    發(fā)表于 05-10 06:52
    主站蜘蛛池模板: 久久黄色录像 | 四虎影视在线观看 | 91极品女神私人尤物在线播放 | 亚洲福利视频网址 | 亚洲乱码中文字幕综合 | 在线观看免费视频 | 欧美性色视频 | 久久久久99精品成人片三人毛片 | 手机看片国产免费现在观看 | 日本www.色| 天天艹夜夜艹 | 国产精品美女自在线观看免费 | 亚洲成a人片毛片在线 | 久久久久久人精品免费费看 | 黑人40厘米全进去xxxx猛交 | 性视频在线 | 在线欧美国产 | 成人网18免费下 | 亚洲不卡视频 | 五月天丁香婷 | 一区二区三 | 国产午夜精品片一区二区三区 | 人人cao| 午夜人成 | 男女爱爱爽爽福利免费视频 | 美女午夜| 亚洲色图日韩精品 | 亚洲人成影网站~色 | 7777奇米 | 久草在线免费资源站 | 天天操夜夜操免费视频 | 男女午夜特黄毛片免费 | 精品新一区二区三区四区 | 亚洲天天做日日做天天欢毛片 | 天天好b| 亚洲伊人精品综合在合线 | 99热都是精品 | 特黄毛片 | 我想看三级特黄 | 国产欧美精品一区二区色综合 | 男人和女人做爽爽视频在线观看 |