亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

c++中容器之總結(jié)篇

2020-01-26 15:00:40
字體:
供稿:網(wǎng)友

C++中的容器大致可以分為兩個(gè)大類:順序容器和關(guān)聯(lián)容器。順序容器中有包含有順序容器適配器。
順序容器:將單一類型元素聚集起來成為容器,然后根據(jù)位置來存儲和訪問這些元素。主要有vector、list、deque(雙端隊(duì)列)。順序容器適配器:stack、queue和priority_queue。
關(guān)聯(lián)容器:支持通過鍵來高效地查找和讀取元素。主要有:pair、set、map、multiset和multimap。
接下來依次對于各種容器做詳細(xì)的介紹。

一、順序容器

1、順序容器定義
為了定義一個(gè)容器類型的對象,必須先包含相關(guān)的頭文件:
      定義vector:#include <vector>
      定義list:#include <list>
      定義deque:#include <deque>

定義示例

vector<int> vi;list<int> li;deque<int> di;

2、順序容器初始化

初始化示例:

//初始化為一個(gè)容器的副本vector<int> vi;vector<int> vi2(vi); //利用vi來初始化vi2//初始化為一段元素的副本char*words[] = {"stately", "plump", "buck", "mulligan"};size_twords_size = sizeof(words)/sizeof(char*);list<string> words2(words, words + words_size);//分配和初始化指定數(shù)目的元素constlist<int>::size_type list_size = 64;list<string> slist(list_size, "a"); // 64 strings, each is a

3、順序容器支持的指針運(yùn)算

①所有順序都支持的指針運(yùn)行

②vector 和 deque 容器的迭代器提供額外的運(yùn)算

③迭代器失效:一些容器操作會修改容器的內(nèi)在狀態(tài)或移動(dòng)容器內(nèi)的元素。這樣的操作使所有指向被移動(dòng)的元素的迭代器失效,也可能同時(shí)使其他迭代器失效。使用無效迭代器是沒有定義的,可能會導(dǎo)致與懸垂指針相同的問題。

④begin和end成員:begin和end操作產(chǎn)生指向容器內(nèi)第一個(gè)元素和最后一個(gè)元素的下一位置的迭代器。

3、順序容器操作

①添加元素

添加元素示例:

//在容器首部或者尾部添加數(shù)據(jù)list<int> ilist;ilist.push_back(ix);//尾部添加ilist.push_front(ix);//首部添加//在容器中指定位置添加元素list<string> lst;list<string>::iterator iter = lst.begin();while (cin >> word)iter = lst.insert(iter, word); // 和push_front意義一樣//插入一段元素list<string> slist;string sarray[4] = {"quasi", "simba", "frollo", "scar"};slist.insert(slist.end(), 10, "A");//尾部前添加十個(gè)元素都是Alist<string>::iterator slist_iter = slist.begin();slist.insert(slist_iter, sarray+2, sarray+4);//指針范圍添加

②容器大小的操作

示例:

list<int> ilist(10, 1);ilist.resize(15); // 尾部添加五個(gè)元素,值都為0ilist.resize(25, -1); // 再在尾部添加十個(gè)元素,元素為-1ilist.resize(5); // 從尾部刪除20個(gè)元素

③訪問元素

int vector<int> vi;for(int i=0;i<10;i++)vi.push_back(i);cout<<vi[0]<<endl;cout<<vi.at(0)<<endl;cout<<vi[10]<<endl; //越界錯(cuò)誤cout<<vi.at(10)<<endl;//越界錯(cuò)誤

④刪除元素

示例:

//刪除第一個(gè)或最后一個(gè)元素list<int> li;for(int i=0;i<10;i++)list.push_back(i);li.pop_front();//刪除第一個(gè)元素li.pop_back(); //刪除最后一個(gè)元素//刪除容器內(nèi)的一個(gè)元素list<int>::iterator iter =li.begin();if(iter!= li.end())li.erase(iter);//刪除容器內(nèi)所有元素li.clear();

⑤賦值與swap

list<string> sl1,sl2;for(int i=0;i<10;i++)sl2.push_back("a");sl1.assign(sl2.begin(),sl2.end());//用sl2的指針范圍賦值,sl1中十個(gè)元素都為asl1.assign(10, "A"); //s1被重新賦值,擁有十個(gè)元素,都為A

swap示例:

vector<string> vs1(3); // vs1有3個(gè)元素
vector<string> vs(5); // vs2有5個(gè)元素
vs1.swap(vs2);//執(zhí)行后,vs1中5個(gè)元素,而vs2則存3個(gè)元素。

⑥vector的自增長:capacity 和 reserve 成員

為了提高vector的效率,不用每次添加元素都重新分配空間。vector會在分配空間時(shí)候預(yù)分配大于需要的空間。vector 類提供了兩個(gè)成員函數(shù):capacity 和reserve 使程序員可與 vector 容器內(nèi)存分配的實(shí)現(xiàn)部分交互工作。
capacity操作:獲取在容器需要分配更多的存儲空間之前能夠存儲的元素總數(shù)
reserve操作:告訴vector容器應(yīng)該預(yù)留多少個(gè)元素的存儲空間

capacity(容量)與size(長度)的區(qū)別:size指容器當(dāng)前擁有的元素個(gè)數(shù),而capacity則指容器在必須分配新存儲空間之前可以存儲的元素總數(shù)。capacity是比size大的一般情況下。
示例:

vector<int> ivec;cout << "ivec: size: " << ivec.size()<< " capacity: " << ivec.capacity() << endl;//都為0for (vector<int>::size_type ix = 0; ix != 24; ++ix)ivec.push_back(ix);cout << "ivec: size: " << ivec.size()<< " capacity: " << ivec.capacity() << endl;//capacity大于size

可以通過函數(shù)reserve()來操作預(yù)留空間

//在之前一段代碼的基礎(chǔ)上
ivec.reserve(ivec.capacity()+50);//為ivec增加了50的預(yù)留空間

另外:如果不手動(dòng)操作來預(yù)留空間,每當(dāng) vector 容器不得不分配新的存儲空間時(shí),以加倍當(dāng)前容量的分配策略實(shí)現(xiàn)重新分配。

4、容器的選用
選擇容器類型的常規(guī)法則:
①如果程序要求隨機(jī)訪問元素,則應(yīng)使用 vector 或 deque 容器。
②如果程序必須在容器的中間位置插入或刪除元素,則應(yīng)采用 list 容器。
③如果程序不是在容器的中間位置,而是在容器首部或尾部插入或刪除元素,則應(yīng)采用 deque 容器。
④如果只需在讀取輸入時(shí)在容器的中間位置插入元素,然后需要隨機(jī)訪問元素,則可考慮在輸入時(shí)將元素讀入到一個(gè) list 容器,接著對此容器重新排序,使其適合順序訪問,然后將排序后的 list 容器復(fù)制到一個(gè) vector容器。
如果程序既需要隨機(jī)訪問又必須在容器的中間位置插入或刪除元素,選擇何種容器取決于下面兩種操作付出的相對代價(jià):隨機(jī)訪問 list 容器元素的代價(jià),以及在 vector 或 deque 容器中插入/刪除元素時(shí)復(fù)制元素的代價(jià)。通常來說,應(yīng)用中占優(yōu)勢的操作(程序中更多使用的是訪問操作還是插入/刪除操作)將決定應(yīng)該什么類型的容器。

5、容器適配器

①適配器通用的操作和類型

②適配器的初始化
所有適配器都定義了兩個(gè)構(gòu)造函數(shù):默認(rèn)構(gòu)造函數(shù)用于創(chuàng)建空對象,而帶一個(gè)容器參數(shù)的構(gòu)造函數(shù)將參數(shù)容器的副本作為其基礎(chǔ)值。

默認(rèn)的stack和queue都基于deque容器實(shí)現(xiàn),而priority_queue則在vector容器上實(shí)現(xiàn)。
示例:

vector<int> vi;deque<int> deq;stack<int> stk(deq); //用deq初始化stkstack<int> stk1(vi); //報(bào)錯(cuò)

③適配器的操作
棧適配器:

隊(duì)列和優(yōu)先級隊(duì)列:

二、關(guān)聯(lián)容器

1、pair

①pairs類型提供的操作

②pairs類型定義和初始化

pair<string, string> test("A", "B");

③pairs其他操作

//pairs對象的操作string firstBook;if (author.first == "James" && author.second == "Joyce")firstBook = "Stephen Hero";//生成新的pair對象pair<string, string> next_auth;next_auth = make_pair("A","B");//第一種方法next_auth = pair<string, string>("A","B"); //第二種方法cin>>next_auth.first>>next_auth.second;//第三種方法

2、map

map 是鍵-值對的集合。map 類型通??衫斫鉃殛P(guān)聯(lián)數(shù)組:可使用鍵作為下標(biāo)來獲取一個(gè)值,正如內(nèi)置數(shù)組類型一樣。而關(guān)聯(lián)的本質(zhì)在于元素的值與某個(gè)特定的鍵相關(guān)聯(lián),而并非通過元素在數(shù)組中的位置來獲取。

①map對象的定義

map<string, int> word_count;

這個(gè)語句定義了一個(gè)名為 word_count 的 map 對象,由 string 類型的鍵索引,關(guān)聯(lián)的值則int型。
map訪問:對迭代器進(jìn)行解引用時(shí),將獲得一個(gè)引用,指向容器中一個(gè)pair<const string,int>類
型的值。通過pair類型的訪問方式進(jìn)行訪問。

②map的構(gòu)造函數(shù)

③鍵類型的約束
在使用關(guān)聯(lián)容器時(shí),它的鍵不但有一個(gè)類型,而且還有一個(gè)相關(guān)的比較函數(shù)。所用的比較函數(shù)必須在鍵類型上定義嚴(yán)格弱排序(strict weak ordering):可理解為鍵類型數(shù)據(jù)上的“小于”關(guān)系,雖然實(shí)際上可以選擇將比較函數(shù)設(shè)計(jì)得更復(fù)雜。
對于鍵類型,唯一的約束就是必須支持 < 操作符,至于是否支持其他的關(guān)系或相等運(yùn)算,則不作要求。

④map類定義的類型

value_type是存儲元素的鍵以及值的pair類型,而且鍵為const。例如,word_count 數(shù)組的value_type 為pair<const string,int> 類型。value_type 是 pair 類型,它的值成員可以修改,但鍵成員不能修改。

⑤map添加元素
添加元素有兩種方法:1、先用下標(biāo)操作符獲取元素,然后給獲取的元素賦值 2、使用insert成員函數(shù)實(shí)現(xiàn)
下標(biāo)操作添加元素:如果該鍵已在容器中,則 map 的下標(biāo)運(yùn)算與 vector 的下標(biāo)運(yùn)算行為相同:返回該鍵所關(guān)聯(lián)的值。只有在所查找的鍵不存在時(shí),map 容器才為該鍵創(chuàng)建一個(gè)新的元素,并將它插入到此 map 對象中。此時(shí),所關(guān)聯(lián)的值采用值初始化:類類型的元素用默認(rèn)構(gòu)造函數(shù)初始化,而內(nèi)置類型的元素初始化為 0。
insert 操作:

示例:

word_count.insert(map<string, int>::value_type("Anna", 1));word_count.insert(make_pair("Anna", 1));

insert的返回值:包含一個(gè)迭代器和一個(gè)bool值的pair對象,其中迭代器指向map中具有相應(yīng)鍵的元素,而bool值則表示是否插入了該元素。如果該鍵已在容器中,則其關(guān)聯(lián)的值保持不變,返回的bool值為true。在這兩種情況下,迭代器都將指向具有給定鍵的元素。

pair<map<string, int>::iterator, bool> ret =
word_count.insert(make_pair(word, 1));

ret存儲insert函數(shù)返回的pair對象。該pair的first成員是一個(gè)map迭代器,指向插入的鍵。ret.first從insert返回的pair對象中獲取 map 迭代器;ret.second從insert返回是否插入了該元素。

⑥查找并讀取map中的元素
map中使用下標(biāo)存在一個(gè)很危險(xiǎn)的副作用:如果該鍵不在 map 容器中,那么下標(biāo)操作會插入一個(gè)具有該鍵的新元素。所以map 容器提供了兩個(gè)操作:count 和 find,用于檢查某個(gè)鍵是否存在而不會插入該鍵。

int occurs = 0;if (word_count.count("foobar"))occurs = word_count["foobar"];map<string,int>::iterator it = word_count.find("foobar");if (it != word_count.end())occurs = it->second;

⑦從map對象中刪除元素

string removal_word = "a";if (word_count.erase(removal_word))cout << "ok: " << removal_word << " removed/n";else cout << "oops: " << removal_word << " not found!/n";

3、set

①set容器的定義和使用
set 容器的每個(gè)鍵都只能對應(yīng)一個(gè)元素。以一段范圍的元素初始化set對象,或在set對象中插入一組元素時(shí),對于每個(gè)鍵,事實(shí)上都只添加了一個(gè)元素。

vector<int> ivec;for (vector<int>::size_type i = 0; i != 10; ++i) {ivec.push_back(i);ivec.push_back(i);}set<int> iset(ivec.begin(), ivec.end());cout << ivec.size() << endl; //20個(gè)cout << iset.size() << endl; // 10個(gè)

②在set中添加元素

set<string> set1;set1.insert("the"); //第一種方法:直接添加set<int> iset2;iset2.insert(ivec.begin(), ivec.end());//第二中方法:通過指針迭代器

③從set中獲取元素
set 容器不提供下標(biāo)操作符。為了通過鍵從 set 中獲取元素,可使用 find運(yùn)算。如果只需簡單地判斷某個(gè)元素是否存在,同樣可以使用 count 運(yùn)算,返回 set 中該鍵對應(yīng)的元素個(gè)數(shù)。當(dāng)然,對于 set 容器,count 的返回值只能是1(該元素存在)或 0(該元素不存在)

set<int> iset;for(int i = 0; i<10; i++)iset.insert(i);iset.find(1) // 返回指向元素內(nèi)容為1的指針iset.find(11) // 返回指針iset.end()iset.count(1) // 存在,返回1iset.count(11) // 不存在,返回0

3、multimap 和 multiset
關(guān)聯(lián)容器 map 和 set 的元素是按順序存儲的。而 multimap 和multset 也一樣。因此,在multimap和multiset容器中,如果某個(gè)鍵對應(yīng)多個(gè)實(shí)例,則這些實(shí)例在容器中將相鄰存放。迭代遍歷multimap或multiset容器時(shí),可保證依次返回特定鍵所關(guān)聯(lián)的所有元素。

①迭代器的關(guān)聯(lián)容器操作

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产精品18毛片一区二区| 美女啪啪无遮挡免费久久网站| 在线毛片观看| 久热这里只有精品在线| 黄色片网站免费在线观看| 麻豆视频在线播放| 国产高清成人在线| 91精品视频免费看| 麻豆导航在线观看| 久久亚洲二区三区| 香蕉久久久久久久| 5566中文字幕一区二区电影| 亚洲伊人一本大道中文字幕| 国产精品传媒入口麻豆| 国产欧美日韩另类一区| 国产精品扒开腿做爽爽爽的视频| 亚洲香蕉久久| 成人性色生活片| 一二三区精品| 粉嫩精品一区二区三区在线观看| 亚洲精品中文字幕乱码| av av在线| 日韩av资源站| 国产精品亚洲成在人线| 成人精品视频网站| 国产中文字幕精品| 亚洲日本japanese丝袜| 亚洲色图丝袜美腿| 51妺嘿嘿午夜福利| 亚洲欧美99| 日韩二区三区四区| 国产乱淫av片杨贵妃| 浅井舞香一区二区| 97成人在线观看视频| 欧美亚洲人成在线| 亚洲午夜久久久久久尤物| 羞羞色国产精品网站| 一区二区三区精品视频在线| youjizz在线播放| 黄色成人免费网| 我要色综合中文字幕| 精品久久一区| 91久久极品少妇xxxxⅹ软件| 秋霞成人午夜鲁丝一区二区三区| 久久久久国色av免费看影院| 中文字幕欧美三区| av天堂一区二区| 亚洲成人天堂网| 蜜臀视频一区二区三区| 91美女主播在线视频| 精品视频高潮| 日韩中文字幕在线视频观看| 精品国产乱码久久久久久影片| 日韩激情av| 中文字幕一区二区人妻痴汉电车| 国产成人在线免费| 亚洲aⅴ怡春院| 日本高清视频免费看| 色婷婷视频在线观看| av免费在线播放| 日韩一区二区三区四区在线| 亚洲午夜国产成人av电影男同| 激情成人开心网| 久久久久久一区| 妺妺窝人体色WWW精品| 日本精品一区二区三区高清| 狠狠色香婷婷久久亚洲精品| 99riav视频| 亚洲欧美久久久| 欧美哺乳videos| 免费一级欧美在线大片| 亚洲成人午夜电影| 一二三区精品福利视频| 亚洲国产精品视频一区| 偷偷看偷偷操| 国产精品美女诱惑| 国产精品日本欧美一区二区三区| 国产精品免费区二区三区观看| 午夜av免费看| 成年人网站免费在线观看| 国产精品主播在线观看| 国产麻豆欧美日韩一区| 天天干天天玩天天操| 欧美激情一区二区三区免费观看| 国产情侣久久久久aⅴ免费| 麻豆中文一区二区| 影音先锋日韩资源| 国产精品一二三在线观看| 国产一卡2卡3卡免费网站| 色片在线免费观看| 这里只有精品66| 色婷婷久久av| 在线亚洲高清视频| 国产成人精品亚洲男人的天堂| 亚洲一区在线看| 韩国一区二区在线播放| 久久丫精品忘忧草西安产品| 国产精品午夜在线观看| 亚洲国产视频二区| 日本视频三区| 青青草精品视频在线| 99re6热在线精品视频播放速度| 国产手机视频精品| 三级黄色片免费观看| 免费污视频在线一区| 色的视频在线免费看| 成人午夜大片免费观看| 亚洲精品一区中文字幕乱码| 91欧美日韩麻豆精品| 欧美天堂一区二区三区| 亚洲精品爱爱久久| 性色av一区二区三区红粉影视| 国产精品久久久久久久久久妞妞| 国产女人免费看a级丨片| 大桥未久av一区二区三区中文| 国产日产一区二区| 久热在线中文字幕色999舞| 天堂在线中文网| 在线亚洲成人| 国产一区二区电影| 在线看av的网址| 日韩av在线免费观看一区| 在线观看欧美成人| xxxx 国产| 四虎电影院在线观看| 亚洲欧美日本国产有色| www.av中文字幕| 亚洲综合电影一区二区三区| 日韩a级黄色片| 色视频精品视频在线观看| 91精品国产电影| 人人在草线视频在线观看| 国产成人一区二区三区小说| 国产一区二区三区精品欧美日韩一区二区三区| 2025国产精品视频| 成人综合国产精品| 亚洲第一se情网站| 欧美精品日韩一区| 综合久久婷婷| 免费免费啪视频在线观播放| 中文字幕在线欧美| 日韩av片在线播放| 日本夜夜草视频网站| 精品三级av在线导航| 亚洲美女久久久| 亚洲成人第一区| 来个黄色网址| 欧美人与动牲交xxxxbbbb| 717成人午夜免费福利电影| 欧美美最猛性xxxxxx| 精品国产乱码一区二区三区四区| 欧美三级三级三级爽爽爽| 色网综合在线观看| 麻豆精品免费视频| 精品人妻一区二区三区四区不卡| 一区在线不卡| av伦理在线| 日本1区2区3区视频| 免费看成人吃奶视频在线| av 日韩 人妻 黑人 综合 无码| 日韩欧美一级精品久久| 中文在线日韩| 九九视频免费在线观看| 91久久精品无码一区二区| 欧美高清免费| 欧美日韩五月天| 日韩精品一区二区av| 成人在线观看黄| 精品国产高清a毛片无毒不卡| 最近免费看av| 精品精品国产国产自在线| 亚洲高清久久久| www.午夜精品| 成人在线观看91| 色呦呦在线资源| 丝袜情趣国产精品| 国产精品热久久久久夜色精品三区| 日本aⅴ亚洲精品中文乱码| 一区二区伦理片| 久热综合在线亚洲精品| 国产精品—色呦呦| 欧美区在线观看| 国产毛片精品视频| 日本亚洲自拍| 亚洲国产精品久久久久婷婷884| 中文字幕日韩第一页| www.激情网.com| 在线观看毛片视频| 日本一区视频| 日日骚久久av| 国产美女性感在线观看懂色av| 91综合视频| 男插女视频网站| 黄色99视频| 无码h肉动漫在线观看| 欧美另类极品videosbest视| 天天射成人网| 色一情一区二区三区| 欧美日韩和欧美的一区二区| 亚洲免费成人av在线| 91亚洲精品一区二区乱码| youjizzxxxx18| 亚洲一区中文| 欧美成人国产精品一区二区| 成人av在线资源| 免费美女久久99| 手机看片福利视频| 国产宾馆实践打屁股91| 欧洲亚洲一区二区三区| 日韩新的三级电影| 五月天丁香视频| 欧美图区在线视频| 亚洲日本在线视频观看| 成人国产一区二区三区精品麻豆| 欧美日韩一级黄| 午夜在线观看91| 亚洲а∨天堂久久精品喷水| 蜜臀av一级做a爰片久久| 亚洲色在线视频| 免费成人你懂的| 最近2018中文字幕免费在线视频| 97国产精品视频人人做人人爱| 国产成人精品av| 色综合天天天天做夜夜夜夜做| 国产三级av在线播放| 男人天堂新网址| 亚洲专区中文字幕| 欧美日本精品在线| 亚洲一区二区三区精品在线| www.欧美日韩国产在线| 欧美国产乱视频| 91看片官网| 波多野结衣二区三区| 中文字幕亚洲日本| 中文字幕欧美日韩一区二区| 欧美不卡123| 在线看三级网站视频| 二区三区偷拍浴室洗澡视频| 亚洲天堂网中文字| 色婷婷综合久久久久中文一区二区| 伊人影院蕉久552| 欧美69xx性欧美| 在线成人免费| 国产精品日韩精品欧美精品| 91九色porny视频| 欧美a级成人淫片免费看| 91精品国产一区二区三区| 国产亚洲欧美在线视频| www.国产视频.com| 国产麻豆剧传媒精品国产av| 秋霞国产午夜精品免费视频| 日韩一区二区精品葵司在线| 在线观看成人av电影| 成人自拍视频在线| 性xxxxxxxxx18欧美| 欧美午夜视频在线观看| 天堂一区二区在线| 色婷婷综合中文久久一本| 成人看片视频| 日本不卡视频| 精品无码久久久久成人漫画| 亚洲国产成人va在线观看天堂| 亚洲免费国产视频| 性生活在线视频| 激情欧美一区二区三区| 成人爽a毛片| 欧美一级二级三级乱码| 日韩欧美中文| 国产欧美一区二区三区在线观看视频| 91夜夜蜜桃臀一区二区三区| 欧美日韩一区二区三区高清| 国产女人高潮毛片| 欧美专区在线观看| 五月天视频在线观看| 亚洲缚视频在线观看| 天堂√最新版中文在线| 久久精品国产2020观看福利| 无码人妻一区二区三区在线视频| 一级在线免费视频| 日韩一级精品视频在线观看| 天天射天天操天天干| 日韩美女av在线免费观看| 天天操夜夜骑| 欧洲色大大久久| 中文字幕一精品亚洲无线一区| 国产日韩欧美不卡在线| 日韩一区二区三区免费| 农村老熟妇乱子伦视频| 神马影院一区二区三区| 国产激情在线视频| 日本成人黄色| 麻豆精品99| 中文字幕在线字幕中文| 不卡的看片网站| 久久亚洲精品国产亚洲老地址| 国产丝袜在线播放| 小泽玛利亚视频在线观看| 亚洲黄色免费| 在线色视频观看| 欧美污视频网站| 美国毛片一区二区三区| 毛片免费不卡| 国产精品私人影院| 欧美日韩三级一区| 欧美三级视频在线播放| 欧美高清在线观看| 国产亚洲一区二区三区在线观看| 欧美熟妇激情一区二区三区| 在线成人www免费观看视频| 久久91麻豆精品一区| 麻豆精品在线看| 国产精品大全| 中文字幕在线视频网| 成人免费视频在线观看超级碰| 无人区在线高清完整免费版 一区二| 亚洲欧美在线不卡| 久久国产精品无码网站| 欧美日韩国内| 亚洲国产成人精品一区二区| 韩国欧美国产一区| 久久成人综合网| 欧美国产在线电影| 欧美视频在线观看一区二区| 日本护士...精品国| 美女一区二区三区在线观看| 一级在线观看视频| 成人免费一区二区三区视频网站| 精品无码在线视频|