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

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

NDK 數據結構之隊列與棧等的實現

2020-05-23 13:38:06
字體:
來源:轉載
供稿:網友

NDK 數據結構之隊列與棧等的實現

com_tz_ndk_cpp_NDKCpp.h

/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_tz_ndk_cpp_NDKCpp */  #ifndef _Included_com_tz_ndk_cpp_NDKCpp #define _Included_com_tz_ndk_cpp_NDKCpp #ifdef __cplusplus extern "C" { #endif /*  * Class:   com_tz_ndk_cpp_NDKCpp  * Method:  callCppTest  * Signature: ()V  */ JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppQueue  (JNIEnv *, jobject);   JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppQueuePriority     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppStack     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppList     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppListDelete     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppListInsert     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppSet     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppSetReverse     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppSetSort     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppSetFind     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppMultiSet     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppMap     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppMapDelete     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppMapFind     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppMultiMap     (JNIEnv *, jobject);  JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppVectorCopy     (JNIEnv *, jobject);  #ifdef __cplusplus } #endif #endif 

com_tz_ndk_cpp_NDKCpp.cpp

#include <iostream> #include <string> #include <android/log.h> #include "com_tz_ndk_cpp_NDKCpp.h"  using namespace std;  //1.C++語言:queue隊列-基本使用 #include <queue> JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppQueue     (JNIEnv *, jobject){   //初始化   queue<char> q;   //添加元素   q.push('A');   q.push('B');   q.push('C');   //添加頭部 //  q.front() = 'z';   //添加尾部 //  q.back() = 'D';    //刪除操作   while (!q.empty()){     __android_log_print(ANDROID_LOG_INFO,"main","值: %c",q.front());     //刪除     q.pop();   } }   //2.C++語言:queue隊列-優先級 JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppQueuePriority     (JNIEnv *, jobject){   //2.1 添加元素(默認是按照添加的順序排列) //  queue<int> q; //  q.push(10); //  q.push(50); //  q.push(20); //  q.push(5); //  //打印 //  while (!q.empty()){ //    __android_log_print(ANDROID_LOG_INFO,"main","值: %d",q.front()); //    q.pop(); //  }    //2.2 最大值優先級隊列(從大到小排列) //  priority_queue<int> pq1; //  pq1.push(10); //  pq1.push(50); //  pq1.push(20); //  pq1.push(5); //  while (!pq1.empty()){ //    __android_log_print(ANDROID_LOG_INFO,"main","值: %d",pq1.top()); //    pq1.pop(); //  }    //2.3 最小值優先級隊列   //注意:不同額編譯器對語法檢查有差別   //在AS中進行NDK開發>>符號認為運算符,所以為了避免出現這樣的情況,請用空格分離'> >'   priority_queue<int,vector<int>,greater<int> > pq1;   pq1.push(10);   pq1.push(50);   pq1.push(20);   pq1.push(5);   while (!pq1.empty()){     __android_log_print(ANDROID_LOG_INFO,"main","值: %d",pq1.top());     pq1.pop();   } }    //3.C++語言:stack棧-基本使用 #include <stack> JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppStack     (JNIEnv *, jobject){   stack<int> st;   st.push(10);   st.push(20);   st.push(30);    while (!st.empty()){     __android_log_print(ANDROID_LOG_INFO,"main","值: %d",st.top());     st.pop();   } }   //4.C++語言:list-基本使用 #include <list> JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppList     (JNIEnv *, jobject){   list<int> lt;   //從頭部添加   lt.push_front(10);   lt.push_front(20);   lt.push_front(30);   //從尾部添加   lt.push_back(40);   lt.push_back(50);   lt.push_back(60);    //循環遍歷   for (list<int>::iterator it = lt.begin() ; it != lt.end() ; it++){     __android_log_print(ANDROID_LOG_INFO,"main","值:%d",*it);   }    list<int>::iterator it = lt.begin();   //連續相加允許(++)   //支持'++'、'--'運算符   it++;   it--;   //注意:不支持間斷   //不支持'+'、'-'運算度 //  it = it - 1;  }   //5.C++語言:list-刪除 JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppListDelete     (JNIEnv *, jobject){   list<int> lt;   //從頭部添加   lt.push_front(10);   lt.push_front(20);   lt.push_front(30);   //從尾部添加   lt.push_back(40);   lt.push_back(50);   lt.push_back(60);    //方式一 //  list<int>::iterator it = lt.begin(); //  it++; //  //刪除:刪除第二個元素 //  lt.erase(it);    //方式二   //刪除第二個元素(直接根據內容刪除) //  lt.remove(20);    //方式三:區間刪除   //開始位置   list<int>::iterator it_begin = lt.begin();   //結束位置   list<int>::iterator it_end = lt.begin();   it_end++;   it_end++;   //刪除元素(如果已經被刪除的元素不能夠在刪除)   lt.erase(it_begin,it_end);    //循環遍歷   for (list<int>::iterator it = lt.begin() ; it != lt.end() ; it++){     __android_log_print(ANDROID_LOG_INFO,"main","值:%d",*it);   } }    //6.C++語言:list-插入 JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppListInsert     (JNIEnv *, jobject){   list<int> lt;   //從尾部添加   lt.push_back(40);   lt.push_back(50);   lt.push_back(60);    //插入   lt.insert(lt.begin(),30);   //循環遍歷   for (list<int>::iterator it = lt.begin() ; it != lt.end() ; it++){     __android_log_print(ANDROID_LOG_INFO,"main","值:%d",*it);   } }   //7.C++語言:set-基本使用(元素唯一)-默認從小到大排列 //特點一:元素唯一 //特點二:默認從小到大排列 #include <set> JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppSet     (JNIEnv *, jobject){   set<int> st;   st.insert(40);   st.insert(10);   st.insert(30);   st.insert(20);    //刪除   set<int>::iterator it = st.begin();   st.erase(it);    for (set<int>::iterator it = st.begin() ; it != st.end() ; it++){     __android_log_print(ANDROID_LOG_INFO,"main","值:%d",*it);   }  }   //8.C++語言:set-基本使用(元素唯一)-從大到小排列 //set<int,greater<int>> JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppSetReverse     (JNIEnv *, jobject){   set<int,greater<int> > st;   st.insert(40);   st.insert(10);   st.insert(30);   st.insert(20);     for (set<int>::iterator it = st.begin() ; it != st.end() ; it++){     __android_log_print(ANDROID_LOG_INFO,"main","值:%d",*it);   } }    //9.C++語言:set-自定義排序規則 //需求:根據學生的成績進行排序 class Student{ private:   char* name;   int score; public:   Student(char* name,int score){     this->name = name;     this->score = score;   }   int getScore(){     return this->score;   }   void printStudent(){     __android_log_print(ANDROID_LOG_INFO,"main","姓名: %s, 成績: %d",this->name,this->score);   } }; //仿函數 struct Soft{   //方式一:不寫常量 //  bool operator()(Student &left,Student &right){ //    return left.getScore() < right.getScore(); //  }   //方式二:const修飾   bool operator()(const Student &left,const Student &right){     //類型轉換     Student stu_left = const_cast<Student&>(left);     Student stu_right = const_cast<Student&>(right);     return stu_left.getScore() < stu_right.getScore();   } }; JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppSetSort     (JNIEnv *, jobject){   set<Student,Soft> st;   st.insert(Student("小宇",50));   st.insert(Student("夢想",59));   st.insert(Student("song",55));   st.insert(Student("遠方",58));   st.insert(Student("石橋中化妖",40));    for (set<Student>::iterator it = st.begin() ; it != st.end() ; it++){     Student stu = const_cast<Student&>(*it);     stu.printStudent();   }  }  //10.C++語言:set-查找 JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppSetFind     (JNIEnv *, jobject){   set<int> st;   st.insert(10);   st.insert(20);   st.insert(30);   st.insert(40);   st.insert(50);   st.insert(60);   st.insert(70);    //方式一   //查找等于30元素   //st.find(2);    //方式二   //查找等于或者小余35元素   //如果存在你輸入的值30,那么就返回當前值30(例如:30)   //如果不存在你查找的值31,那么返回大于31的最近的一個元素指針   set<int>::iterator it_lower = st.lower_bound(31);   __android_log_print(ANDROID_LOG_INFO,"main","查找結果: %d",*it_lower);    //如果存在你查找的值30,那么就返回大于30最近的一個元素指針40   //如果不存在你查找的值31,那么就返回大于31最近的一個元素的指針40   set<int>::iterator it_upper = st.upper_bound(31);   __android_log_print(ANDROID_LOG_INFO,"main","查找結果: %d",*it_upper);    //方式三:既要返回最小也要最大   pair<set<int>::iterator,set<int>::iterator> p = st.equal_range(30);   //獲取返回的元素   __android_log_print(ANDROID_LOG_INFO,"main","小: %d",*p.first);   __android_log_print(ANDROID_LOG_INFO,"main","大: %d",*p.second);  }   //11.C++語言:multiset-基本使用 //允許存儲重復元素 //默認升序排列 JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppMultiSet     (JNIEnv *, jobject){   //升序 //  multiset<int> mst; //  mst.insert(10); //  mst.insert(20); //  mst.insert(30); //  mst.insert(10); // //  for (multiset<int>::iterator it = mst.begin() ; it != mst.end() ; it++){ //    __android_log_print(ANDROID_LOG_INFO,"main","值: %d",*it); //  }    //降序 //  multiset<int,greater<int> > mst; //  mst.insert(10); //  mst.insert(20); //  mst.insert(30); //  mst.insert(10); // //  for (multiset<int>::iterator it = mst.begin() ; it != mst.end() ; it++){ //    __android_log_print(ANDROID_LOG_INFO,"main","值: %d",*it); //  }    //自定義排序方式   multiset<Student,Soft> mst;   mst.insert(Student("小宇",50));   mst.insert(Student("夢想",59));   mst.insert(Student("song",55));   mst.insert(Student("遠方",58));   mst.insert(Student("石橋中化妖",40));   mst.insert(Student("Dream",40));   for (multiset<Student>::iterator it = mst.begin() ; it != mst.end() ; it++){     Student stu = const_cast<Student&>(*it);     stu.printStudent();   } }    //12.C++語言:map-基本使用 #include <map> #include <string> JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppMap     (JNIEnv *, jobject){   map<int,string> mp;   //方式一:插入數據pair   mp.insert(pair<int,string>(01,"陳國軍"));   mp.insert(pair<int,string>(02,"Mr.Sunday"));   mp.insert(pair<int,string>(03,"Studio"));   mp.insert(pair<int,string>(04,"余祚寧"));    //方式二:如果key存在,那么就不添加同時不覆蓋,如果不存在,就添加   pair<map<int,string>::iterator, bool> result = mp.insert(map<int,string>::value_type(04,"相約98"));   if(result.second){     __android_log_print(ANDROID_LOG_INFO,"main","添加成功!");   }else{     __android_log_print(ANDROID_LOG_INFO,"main","已存在,添加失敗!");   }    //方式三:   mp.insert(make_pair(05,"定定"));    //方式四:如果key存在,重復添加會覆蓋,如果不存在,那就直接添加   mp[5] = "石橋中化妖";   mp[6] = "定定";    for (map<int,string>::iterator it = mp.begin() ; it != mp.end() ; it++){     //獲取key:it->first     __android_log_print(ANDROID_LOG_INFO,"main","key: %d",it->first);     //獲取value:it->second     __android_log_print(ANDROID_LOG_INFO,"main","value: %s",it->second.c_str());   }  }    //13.C++語言:map-刪除 JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppMapDelete     (JNIEnv *, jobject){   map<int,string> mp;   mp.insert(pair<int,string>(01,"陳國軍"));   mp.insert(pair<int,string>(02,"Mr.Sunday"));   mp.insert(pair<int,string>(03,"Studio"));   mp.insert(pair<int,string>(04,"余祚寧"));    //刪除   map<int,string>::iterator it = mp.begin();   mp.erase(it);    //打印   for (map<int,string>::iterator it = mp.begin() ; it != mp.end() ; it++){     //獲取key:it->first     __android_log_print(ANDROID_LOG_INFO,"main","key: %d",it->first);     //獲取value:it->second     __android_log_print(ANDROID_LOG_INFO,"main","value: %s",it->second.c_str());   } }    //14.C++語言:map-查找(equal_range) JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppMapFind     (JNIEnv *, jobject){   map<int,string> mp;   mp.insert(pair<int,string>(01,"陳國軍"));   mp.insert(pair<int,string>(02,"Mr.Sunday"));   mp.insert(pair<int,string>(03,"Studio"));   mp.insert(pair<int,string>(04,"余祚寧"));    //獲取大于或者等于2的元素   pair<map<int,string>::iterator,map<int,string>::iterator> p = mp.equal_range(2);   //判斷是否存在元素   if(p.first != mp.end()){     //等于2     //獲取key:it->first     __android_log_print(ANDROID_LOG_INFO,"main","key: %d",p.first->first);     //獲取value:it->second     __android_log_print(ANDROID_LOG_INFO,"main","value: %s",p.first->second.c_str());      //大于2元素     //獲取key:it->first     __android_log_print(ANDROID_LOG_INFO,"main","key: %d",p.second->first);     //獲取value:it->second     __android_log_print(ANDROID_LOG_INFO,"main","value: %s",p.second->second.c_str());   } }    //15.C++語言:multimap-一對多 //需求:一個用戶對應多個訂單 class Order{ private:   char* name;   int num; public:   Order(char* name,int num){     this->name = name;     this->num = num;   }   void printOrder(){     __android_log_print(ANDROID_LOG_INFO,"main","訂單名稱:%s, 訂單號:%d",this->name,this->num);   } }; JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppMultiMap     (JNIEnv *, jobject){    multimap<string,Order> mst;   mst.insert(make_pair("陳國軍",Order("男士外套",01)));   mst.insert(make_pair("陳國軍",Order("戶外跑鞋",02)));    mst.insert(make_pair("夢想",Order("女士外套",03)));   mst.insert(make_pair("夢想",Order("女士高跟鞋",02)));    mst.insert(make_pair("Dream",Order("女士紗衣",03)));   mst.insert(make_pair("Dream",Order("女士布鞋",02)));   mst.insert(make_pair("Dream",Order("女士外套",02)));   mst.insert(make_pair("Dream",Order("女士褲子",02)));    //遍歷 //  for (multimap<string,Order>::iterator it = mst.begin() ; it != mst.end() ; it++){ //    //獲取key:it->first //    __android_log_print(ANDROID_LOG_INFO,"main","key: %s",it->first.c_str()); //    //獲取value:it->second //    Order order = const_cast<Order&>(it->second); //    order.printOrder(); //  }     //需求:只獲取"夢想"訂單   //獲取訂單的數量   int count = mst.count("夢想");   //打印"夢想"訂單:找到   multimap<string,Order>::iterator it = mst.find("夢想");   //循環遍歷打印   //計數   int i = 0;   while (it != mst.end() && i < count){     __android_log_print(ANDROID_LOG_INFO,"main","key: %s",it->first.c_str());     Order order = const_cast<Order&>(it->second);     order.printOrder();     i++;     it++;   } }    //16.C++語言:vector-淺拷貝和深拷貝 class User{ private:   char* name;   int age; public:   //淺拷貝(默認就是淺拷貝)   User(char* name,int age){     //動態分配內存     this->name = new char[strlen(name)+1];     strcpy(this->name,name);      this->age = age;   }   ~User(){     if(this->name != NULL){       delete[] this->name;       this->name = NULL;       this->age = 0;     }   }   void printUser(){     __android_log_print(ANDROID_LOG_INFO,"main","名稱:%s, 年齡: %d",this->name,this->age);   }    //深拷貝   User(const User &user){     //先釋放內存     if(this->name != NULL){       delete[] this->name;       this->name = NULL;       this->age = 0;     }     //動態分配內存     this->name = new char[strlen(user.name)+1];     strcpy(this->name,user.name);     this->age = user.age;   }    User& operator=(User &user){     if(this->name != NULL){       delete[] this->name;       this->name = NULL;       this->age = 0;     }     //動態分配內存     this->name = new char[strlen(user.name)+1];     strcpy(this->name,user.name);     this->age = user.age;     return *this;   }  }; //class User{ //private: //  string* name; //  int age; //public: //  //淺拷貝(默認就是淺拷貝) //  User(string name,int age){ //    //動態分配內存 //    this->name = new string(const_cast<string&>(name)); //    this->age = age; //  } //  ~User(){ //    if(this->name != NULL){ //      delete this->name; //      this->name = NULL; //      this->age = 0; //    } //  } //  void printUser(){ //    __android_log_print(ANDROID_LOG_INFO,"main","名稱:%s, 年齡: %d",this->name,this->age); //  } // //  //深拷貝 //  User(const User &user){ //    //先釋放內存 //    if(this->name != NULL){ //      delete this->name; //      this->name = NULL; //      this->age = 0; //    } //    //動態分配內存 //    this->name = new string(const_cast<string&>(user.name)); //    this->age = age; //  } // //  User& operator=(User &user){ //    if(this->name != NULL){ //      delete this->name; //      this->name = NULL; //      this->age = 0; //    } //    //動態分配內存 //    this->name = new string(const_cast<string&>(user.name)); //    this->age = age; //    return *this; //  } // ////}; JNIEXPORT void JNICALL Java_com_tz_ndk_cpp_NDKCpp_callCppVectorCopy     (JNIEnv *, jobject){   vector<User> vt;   User user("石橋中化妖",18);   //實參作為形參,需要調用拷貝函數,然后默認是淺拷貝   vt.push_back(user);    //解決方案:深拷貝   for (vector<User>::iterator it = vt.begin() ; it != vt.end() ; it++){     User order = const_cast<User&>(*it);     order.printUser();   }    //作業:string如何深拷貝(稍微麻煩一點) } 

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲图片欧洲图片av| 成人av在线亚洲| 欧美在线视频网站| 色先锋资源久久综合5566| 2018中文字幕一区二区三区| 欧美激情精品久久久| 国产成人91久久精品| 成人黄色午夜影院| 日韩大胆人体377p| 97在线视频观看| 亚洲女成人图区| 亚洲丁香久久久| 在线观看国产精品淫| 91久久精品国产| 欧美超级免费视 在线| 精品无人区太爽高潮在线播放| 91综合免费在线| 色妞一区二区三区| 国产精品久久久久久久久久新婚| 久久久久久久久久久网站| 久久久噜噜噜久久| 日韩在线资源网| 北条麻妃在线一区二区| 亚洲欧美中文另类| 国产精品久久婷婷六月丁香| 久久精品亚洲94久久精品| 国产欧美日韩高清| 国产69久久精品成人| 国产精品高清免费在线观看| 日韩国产欧美精品一区二区三区| 亚洲欧美日韩精品久久亚洲区| 欧美大尺度激情区在线播放| 亚洲精品久久久久久久久久久久久| 久久精品视频在线观看| 久久久久久亚洲精品| 97涩涩爰在线观看亚洲| 亚洲aaa激情| 亚洲a级在线播放观看| 日韩国产高清视频在线| 日本精品久久中文字幕佐佐木| 亚洲成人精品视频在线观看| 欧美成人免费一级人片100| 国产精品18久久久久久首页狼| 精品国产乱码久久久久久虫虫漫画| 久久久国产精品一区| 日韩国产高清污视频在线观看| 亚洲成人久久久| 宅男66日本亚洲欧美视频| 91国自产精品中文字幕亚洲| 91久久久久久久久久久久久| 欧美又大粗又爽又黄大片视频| 亚洲色图综合网| 日日狠狠久久偷偷四色综合免费| 国产日韩欧美日韩大片| 亚洲国产欧美日韩精品| 91超碰caoporn97人人| 欧美电影在线观看高清| 久久免费观看视频| 精品国产91乱高清在线观看| 欧美日韩国产中文精品字幕自在自线| 波霸ol色综合久久| 亚洲成人999| 国产一区二区免费| 久久久久999| 亚洲va欧美va在线观看| 欧美亚洲午夜视频在线观看| 国产在线拍揄自揄视频不卡99| 国产91精品网站| 成人午夜在线影院| 欧美日韩加勒比精品一区| 日本精品va在线观看| 亚洲一区二区精品| 91精品中国老女人| 久久久99免费视频| 久久资源免费视频| 欧美丰满片xxx777| 日韩中文字幕在线观看| 欧美性生交xxxxx久久久| 日韩成人在线视频网站| 国产精品一区二区久久久| 国产免费久久av| 国产原创欧美精品| 91免费国产视频| 久久香蕉精品香蕉| 日韩欧美aaa| 久久精品99无色码中文字幕| 日本精品一区二区三区在线播放视频| 久久久免费精品视频| 欧美大胆a视频| 91探花福利精品国产自产在线| 国产精品综合不卡av| 国产精品美女久久久免费| 欧美色欧美亚洲高清在线视频| 亚洲精品电影网| 色综合天天综合网国产成人网| 欧美激情啊啊啊| 亚洲xxxx3d| 91中文在线视频| 欧美中文在线字幕| 精品电影在线观看| 久久久久久久97| 久久香蕉频线观| 国产午夜精品久久久| 日韩欧美a级成人黄色| 国产精品天天狠天天看| 久久成人精品电影| 清纯唯美日韩制服另类| 欧美亚洲成人免费| 欧美日韩国产色视频| 成人精品一区二区三区电影黑人| 91热精品视频| 国模视频一区二区三区| 亚洲永久在线观看| 亚洲国产私拍精品国模在线观看| 国产精品免费一区豆花| 亚洲欧美国产视频| 日本韩国在线不卡| 亚洲视频在线看| 国内精品久久久久影院优| 性欧美在线看片a免费观看| 2018中文字幕一区二区三区| 91午夜理伦私人影院| 欧美日韩福利视频| 亚洲高清不卡av| 奇米影视亚洲狠狠色| 亚洲国产精品久久久久秋霞不卡| 亚洲欧美日韩中文在线制服| 91高清视频免费| 美女999久久久精品视频| 国产精品成人av在线| 国产精品白丝jk喷水视频一区| 日韩精品在线观看网站| 精品亚洲一区二区三区在线观看| 国产精品444| 国产亚洲成av人片在线观看桃| 亚洲国产精品久久精品怡红院| 欧美一级淫片播放口| 亚洲一区精品电影| 亚洲中国色老太| 成人性生交大片免费看视频直播| 久久艹在线视频| 欧美性猛交xxxx乱大交极品| 亚洲女同精品视频| 久久久久久国产精品| 国产精品福利久久久| 精品国产福利视频| zzjj国产精品一区二区| 精品偷拍一区二区三区在线看| 俺去了亚洲欧美日韩| 在线观看不卡av| 懂色av中文一区二区三区天美| 国产一区二区三区三区在线观看| 国产精品久久久久久久久久久新郎| 最新国产成人av网站网址麻豆| 亚洲天堂男人天堂| 欧日韩不卡在线视频| 18一19gay欧美视频网站| 国产精品视频免费在线| 亚洲最大福利视频网站| 日本免费一区二区三区视频观看| 2018国产精品视频| 久久久国产精品亚洲一区| 在线视频中文亚洲| 国产一区二区三区三区在线观看|