青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

STL算法概述

http://www.cnblogs.com/kzloser/archive/2012/11/02/2751424.html

目錄

STL算法概述
查找算法
堆算法
關系算法
集合算法
排列組合算法
排序和通用算法
刪除和替換算法
生成和變異算法
算數算法


STL算法概述

簡介:

STL算法部分主要由頭文件<algorithm>,<numeric>,<functional>組成。要使用 STL中的算法函數必須包含頭文件<algorithm>,對于數值算法須包含<numeric>,<functional>中則定義了一些模板類,用來聲明函數對象

注意:

編譯器無法檢測出所傳遞的迭代器是一個無效形式的迭代器,當然也無法給出算法函數錯誤的提示,因為迭代器并不是真實的類別,它只是傳遞給函數模板的一種參數格式而已

STL中算法分類:

  • 操作對象
    • 直接改變容器的內容
    • 將原容器的內容復制一份,修改其副本,然后傳回該副本
  • 功能:
    • 非可變序列算法 指不直接修改其所操作的容器內容的算法
    • 可變序列算法 指可以修改它們所操作的容器內容的算法
    • 排序算法 包括對序列進行排序和合并的算法、搜索算法以及有序序列上的集合操作
    • 數值算法 對容器內容進行數值計算

查找算法(13個):判斷容器中是否包含某個值

函數名 頭文件 函數功能
adjacent_find <algorithm> 在iterator對標識元素范圍內,查找一對相鄰重復元素,找到則返回指向這對元素的第一個元素的ForwardIterator .否則返回last.重載版本使用輸入的二元操作符代替相等的判斷
函數原形 template<class FwdIt> FwdIt adjacent_find(FwdIt first, FwdIt last);
template<class FwdIt, class Pred> FwdIt adjacent_find(FwdIt first, FwdIt last, Pred pr);
binary_search <algorithm> 在有序序列中查找value,找到返回true.重載的版本實用指定的比較函數對象或函數指針來判斷相等
函數原形 template<class FwdIt, class T> bool binary_search(FwdIt first, FwdIt last, const T& val);
template<class FwdIt, class T, class Pred> bool binary_search(FwdIt first, FwdIt last, const T& val,Pred pr);
count <algorithm> 利用等于操作符,把標志范圍內的元素與輸入值比較,返回相等元素個數
函數原形 template<class InIt, class Dist> size_t count(InIt first, InIt last,const T& val, Dist& n);
count_if <algorithm> 利用輸入的操作符,對標志范圍內的元素進行操作,返回結果為true的個數
函數原形 template<class InIt, class Pred, class Dist> size_t count_if(InIt first, InIt last, Pred pr);
equal_range <algorithm> 功能類似equal,返回一對iterator,第一個表示lower_bound,第二個表示upper_bound
函數原形 template<class FwdIt, class T> pair<FwdIt, FwdIt> equal_range(FwdIt first, FwdIt last,const T& val);
template<class FwdIt, class T, class Pred> pair<FwdIt, FwdIt> equal_range(FwdIt first, FwdIt last,const T& val, Pred pr);
find <algorithm> 利用底層元素的等于操作符,對指定范圍內的元素與輸入值進行比較.當匹配時,結束搜索,返回該元素的一個InputIterator
函數原形 template<class InIt, class T> InIt find(InIt first, InIt last, const T& val);
find_end <algorithm> 在指定范圍內查找"由輸入的另外一對iterator標志的第二個序列"的最后一次出現.找到則返回最后一對的第一個ForwardIterator,否則返回輸入的"另外一對"的第一個ForwardIterator.重載版本使用用戶輸入的操作符代替等于操作
函數原形 template<class FwdIt1, class FwdIt2> FwdIt1 find_end(FwdIt1 first1, FwdIt1 last1,FwdIt2 first2, FwdIt2 last2);
template<class FwdIt1, class FwdIt2, class Pred> FwdIt1 find_end(FwdIt1 first1, FwdIt1 last1,FwdIt2 first2, FwdIt2 last2, Pred pr);
find_first_of <algorithm> 在指定范圍內查找"由輸入的另外一對iterator標志的第二個序列"中任意一個元素的第一次出現。重載版本中使用了用戶自定義操作符
函數原形 template<class FwdIt1, class FwdIt2> FwdIt1 find_first_of(FwdIt1 first1, FwdIt1 last1,FwdIt2 first2, FwdIt2 last2);
template<class FwdIt1, class FwdIt2, class Pred> FwdIt1 find_first_of(FwdIt1 first1, FwdIt1 last1,FwdIt2 first2, FwdIt2 last2, Pred pr);
find_if <algorithm> 使用輸入的函數代替等于操作符執行find
  template<class InIt, class Pred> InIt find_if(InIt first, InIt last, Pred pr);
lower_bound <algorithm> 返回一個ForwardIterator,指向在有序序列范圍內的可以插入指定值而不破壞容器順序的第一個位置.重載函數使用自定義比較操作
函數原形 template<class FwdIt, class T> FwdIt lower_bound(FwdIt first, FwdIt last, const T& val);
template<class FwdIt, class T, class Pred> FwdIt lower_bound(FwdIt first, FwdIt last, const T& val, Pred pr);
upper_bound <algorithm> 返回一個ForwardIterator,指向在有序序列范圍內插入value而不破壞容器順序的最后一個位置,該位置標志一個大于value的值.重載函數使用自定義比較操作
函數原形 template<class FwdIt, class T> FwdIt upper_bound(FwdIt first, FwdIt last, const T& val);
template<class FwdIt, class T, class Pred> FwdIt upper_bound(FwdIt first, FwdIt last, const T& val, Pred pr);
search <algorithm> 給出兩個范圍,返回一個ForwardIterator,查找成功指向第一個范圍內第一次出現子序列(第二個范圍)的位置,查找失敗指向last1,重載版本使用自定義的比較操作
函數原形 template<class FwdIt1, class FwdIt2> FwdIt1 search(FwdIt1 first1, FwdIt1 last1,FwdIt2 first2, FwdIt2 last2);
template<class FwdIt1, class FwdIt2, class Pred> FwdIt1 search(FwdIt1 first1, FwdIt1 last1, FwdIt2 first2, FwdIt2 last2, Pred pr);
search_n <algorithm> 在指定范圍內查找val出現n次的子序列。重載版本使用自定義的比較操作
函數原形 template<class FwdIt, class Dist, class T> FwdIt search_n(FwdIt first, FwdIt last,Dist n, const T& val);
template<class FwdIt, class Dist, class T, class Pred> FwdIt search_n(FwdIt first, FwdIt last,Dist n, const T& val, Pred pr);

堆算法(4個)

函數名 頭文件 函數功能
make_heap <algorithm> 把指定范圍內的元素生成一個堆。重載版本使用自定義比較操作
函數原形 template<class RanIt> void make_heap(RanIt first, RanIt last);
template<class RanIt, class Pred> void make_heap(RanIt first, RanIt last, Pred pr);
pop_heap <algorithm> 并不真正把最大元素從堆中彈出,而是重新排序堆。它把first和last-1交換,然后重新生成一個堆。可使用容器的back來訪問被"彈出"的元素或者使用pop_back進行真正的刪除。重載版本使用自定義的比較操作
函數原形 template<class RanIt> void pop_heap(RanIt first, RanIt last);
template<class RanIt, class Pred> void pop_heap(RanIt first, RanIt last, Pred pr);
push_heap <algorithm> 假設first到last-1是一個有效堆,要被加入到堆的元素存放在位置last-1,重新生成堆。在指向該函數前,必須先把元素插入容器后。重載版本使用指定的比較操作
函數原形 template<class RanIt>void push_heap(RanIt first, RanIt last);
template<class RanIt, class Pred> void push_heap(RanIt first, RanIt last, Pred pr);
sort_heap <algorithm> 對指定范圍內的序列重新排序,它假設該序列是個有序堆。重載版本使用自定義比較操作
函數原形 template<class RanIt> void sort_heap(RanIt first, RanIt last);
template<class RanIt, class Pred> void sort_heap(RanIt first, RanIt last, Pred pr);

關系算法(8個)

函數名 頭文件 函數功能
equal <algorithm> 如果兩個序列在標志范圍內元素都相等,返回true。重載版本使用輸入的操作符代替默認的等于操作符
函數原形 template<class InIt1, class InIt2> bool equal(InIt1 first, InIt1 last, InIt2 x);
template<class InIt1, class InIt2, class Pred> bool equal(InIt1 first, InIt1 last, InIt2 x, Pred pr);
includes <algorithm> 判斷第一個指定范圍內的所有元素是否都被第二個范圍包含,使用底層元素的<操作符,成功返回true。重載版本使用用戶輸入的函數
函數原形 template<class InIt1, class InIt2> bool includes(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2);
template<class InIt1, class InIt2, class Pred> bool includes(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, Pred pr);
lexicographical_compare <algorithm> 比較兩個序列。重載版本使用用戶自定義比較操作
函數原形 template<class InIt1, class InIt2> bool lexicographical_compare(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2);
template<class InIt1, class InIt2, class Pred> bool lexicographical_compare(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, Pred pr);
max <algorithm> 返回兩個元素中較大一個。重載版本使用自定義比較操作
函數原形 template<class T> const T& max(const T& x, const T& y);
template<class T, class Pred> const T& max(const T&  x, const T& y, Pred pr);
max_element <algorithm> 返回一個ForwardIterator,指出序列中最大的元素。重載版本使用自定義比較操作
函數原形 template<class FwdIt> FwdIt max_element(FwdIt first, FwdIt last);
template<class FwdIt, class Pred> FwdIt max_element(FwdIt first, FwdIt last, Pred pr);
min <algorithm> 返回兩個元素中較小一個。重載版本使用自定義比較操作
函數原形 template<class T> const T& min(const T& x, const T& y);
template<class T, class Pred> const T& min(const T& x, const T& y, Pred pr);
min_element <algorithm> 返回一個ForwardIterator,指出序列中最小的元素。重載版本使用自定義比較操作
函數原形 template<class FwdIt> FwdIt min_element(FwdIt first, FwdIt last);
template<class FwdIt, class Pred> FwdIt min_element(FwdIt first, FwdIt last, Pred pr);
mismatch <algorithm> 并行比較兩個序列,指出第一個不匹配的位置,返回一對iterator,標志第一個不匹配元素位置。如果都匹配,返回每個容器的last。重載版本使用自定義的比較操作
函數原形 template<class InIt1, class InIt2> pair<InIt1, InIt2> mismatch(InIt1 first, InIt1 last, InIt2 x);
template<class InIt1, class InIt2, class Pred> pair<InIt1, InIt2> mismatch(InIt1 first, InIt1 last, InIt2 x, Pred pr);

集合算法(4個)

函數名 頭文件 函數功能
set_union <algorithm> 構造一個有序序列,包含兩個序列中所有的不重復元素。重載版本使用自定義的比較操作
函數原形 template<class InIt1, class InIt2, class OutIt> OutIt set_union(InIt1 first1, InIt1 last1, InIt2 first2, InIt2 last2, OutIt x);
template<class InIt1, class InIt2, class OutIt, class Pred> OutIt set_union(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2,OutIt x, Pred pr);
set_intersection <algorithm> 構造一個有序序列,其中元素在兩個序列中都存在。重載版本使用自定義的比較操作
函數原形 template<class InIt1, class InIt2, class OutIt> OutIt set_intersection(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, OutIt x);
template<class InIt1, class InIt2, class OutIt, class Pred> OutIt set_intersection(InIt1 first1, InIt1 last1,InIt2 first2,InIt2 last2, OutIt x, Pred pr);
set_difference <algorithm> 構造一個有序序列,該序列僅保留第一個序列中存在的而第二個中不存在的元素。重載版本使用自定義的比較操作
函數原形 template<class InIt1, class InIt2, class OutIt> OutIt set_difference(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, OutIt x);
template<class InIt1, class InIt2, class OutIt, class Pred> OutIt set_difference(InIt1 first1, InIt1 last1, InIt2 first2, InIt2 last2, OutIt x, Pred pr);
set_symmetric_difference <algorithm> 構造一個有序序列,該序列取兩個序列的對稱差集(并集-交集)
函數原形 template<class InIt1, class InIt2, class OutIt> OutIt set_symmetric_difference(InIt1 first1, InIt1 last1, InIt2 first2, InIt2 last2, OutIt x);
template<class InIt1, class InIt2, class OutIt, class Pred> OutIt set_symmetric_difference(InIt1 first1, InIt1 last1, InIt2 first2, InIt2 last2, OutIt x, Pred pr);

排列組合算法(2個)提供計算給定集合按一定順序的所有可能排列組合

函數名 頭文件 函數功能
next_permutation <algorithm> 取出當前范圍內的排列,并重新排序為下一個排列。重載版本使用自定義的比較操作
函數原形 template<class BidIt> bool next_permutation(BidIt first, BidIt last);
template<class BidIt, class Pred> bool next_permutation(BidIt first, BidIt last, Pred pr);
prev_permutation <algorithm> 取出指定范圍內的序列并將它重新排序為上一個序列。如果不存在上一個序列則返回false。重載版本使用自定義的比較操作
函數原形 template<class BidIt> bool prev_permutation(BidIt first, BidIt last);
template<class BidIt, class Pred> bool prev_permutation(BidIt first, BidIt last, Pred pr);

排序和通用算法(14個):提供元素排序策略

函數名 頭文件 函數功能
inplace_merge <algorithm> 合并兩個有序序列,結果序列覆蓋兩端范圍。重載版本使用輸入的操作進行排序
函數原形 template<class BidIt> void inplace_merge(BidIt first, BidIt middle, BidIt last);
template<class BidIt, class Pred> void inplace_merge(BidIt first, BidIt middle, BidIt last, Pred pr);
merge <algorithm> 合并兩個有序序列,存放到另一個序列。重載版本使用自定義的比較
函數原形 template<class InIt1, class InIt2, class OutIt> OutIt merge(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, OutIt x);
template<class InIt1, class InIt2, class OutIt, class Pred> OutIt merge(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, OutIt x, Pred pr);
nth_element <algorithm> 將范圍內的序列重新排序,使所有小于第n個元素的元素都出現在它前面,而大于它的都出現在后面。重載版本使用自定義的比較操作
函數原形 template<class RanIt> void nth_element(RanIt first, RanIt nth, RanIt last);
template<class RanIt, class Pred> void nth_element(RanIt first, RanIt nth, RanIt last, Pred pr);
partial_sort <algorithm> 對序列做部分排序,被排序元素個數正好可以被放到范圍內。重載版本使用自定義的比較操作
函數原形 template<class RanIt> void partial_sort(RanIt first, RanIt middle, RanIt last);
template<class RanIt, class Pred> void partial_sort(RanIt first, RanIt middle, RanIt last, Pred pr);
partial_sort_copy <algorithm> 與partial_sort類似,不過將經過排序的序列復制到另一個容器
函數原形 template<class InIt, class RanIt> RanIt partial_sort_copy(InIt first1, InIt last1,RanIt first2, RanIt last2);
template<class InIt, class RanIt, class Pred> RanIt partial_sort_copy(InIt first1, InIt last1,RanIt first2, RanIt last2, Pred pr);
partition <algorithm> 對指定范圍內元素重新排序,使用輸入的函數,把結果為true的元素放在結果為false的元素之前
函數原形 template<class BidIt, class Pred> BidIt partition(BidIt first, BidIt last, Pred pr);
random_shuffle <algorithm> 對指定范圍內的元素隨機調整次序。重載版本輸入一個隨機數產生操作
函數原形 template<class RanIt> void random_shuffle(RanIt first, RanIt last);
template<class RanIt, class Fun> void random_shuffle(RanIt first, RanIt last, Fun& f);
reverse <algorithm> 將指定范圍內元素重新反序排序
函數原形 template<class BidIt> void reverse(BidIt first, BidIt last);
reverse_copy <algorithm> 與reverse類似,不過將結果寫入另一個容器
函數原形 template<class BidIt, class&nnbsp;OutIt> OutIt reverse_copy(BidIt first, BidIt last, OutIt x);
rotate <algorithm> 將指定范圍內元素移到容器末尾,由middle指向的元素成為容器第一個元素
函數原形 template<class FwdIt> void rotate(FwdIt first, FwdIt middle, FwdIt last);
rotate_copy <algorithm> 與rotate類似,不過將結果寫入另一個容器
函數原形 template<class FwdIt, class OutIt> OutIt rotate_copy(FwdIt first, FwdIt middle, FwdIt last, OutIt x);
sort <algorithm> 以升序重新排列指定范圍內的元素。重載版本使用自定義的比較操作
函數原形 template<class RanIt> void sort(RanIt first, RanIt last);
template<class RanIt, class Pred> void sort(RanIt first, RanIt last, Pred pr);
stable_sort <algorithm> 與sort類似,不過保留相等元素之間的順序關系
函數原形 template<class BidIt> void stable_sort(BidIt first, BidIt last);
template<class BidIt, class Pred> void stable_sort(BidIt first, BidIt last, Pred pr);
stable_partition <algorithm> 與partition類似,不過不保證保留容器中的相對順序
函數原形 template<class FwdIt, class Pred> FwdIt stable_partition(FwdIt first, FwdIt last, Pred pr);

刪除和替換算法(15個)

函數名 頭文件 函數功能
copy <algorithm> 復制序列
函數原形 template<class InIt, class OutIt> OutIt copy(InIt first, InIt last, OutIt x);
copy_backward <algorithm> 與copy相同,不過元素是以相反順序被拷貝
函數原形 template<class BidIt1, class BidIt2> BidIt2 copy_backward(BidIt1 first, BidIt1 last, BidIt2 x);
iter_swap <algorithm> 交換兩個ForwardIterator的值
函數原形 template<class FwdIt1, class FwdIt2> void iter_swap(FwdIt1 x, FwdIt2 y);
remove <algorithm> 刪除指定范圍內所有等于指定元素的元素。注意,該函數不是真正刪除函數。內置函數不適合使用remove和remove_if函數
函數原形 template<class FwdIt, class T> FwdIt remove(FwdIt first, FwdIt last, const T& val);
remove_copy <algorithm> 將所有不匹配元素復制到一個制定容器,返回OutputIterator指向被拷貝的末元素的下一個位置
函數原形 template<class InIt, class OutIt, class T> OutIt remove_copy(InIt first, InIt last, OutIt x, const T& val);
remove_if <algorithm> 刪除指定范圍內輸入操作結果為true的所有元素
函數原形 template<class FwdIt, class Pred> FwdIt remove_if(FwdIt first, FwdIt last, Pred pr);
remove_copy_if <algorithm> 將所有不匹配元素拷貝到一個指定容器
函數原形 template<class InIt, class OutIt, class Pred> OutIt remove_copy_if(InIt first, InIt last, OutIt x, Pred pr);
replace <algorithm> 將指定范圍內所有等于vold的元素都用vnew代替
函數原形 template<class FwdIt, class T> void replace(FwdIt first, FwdIt last,const T& vold, const T& vnew);
replace_copy <algorithm> 與replace類似,不過將結果寫入另一個容器
函數原形 template<class InIt, class OutIt, class T> OutIt replace_copy(InIt first, InIt last, OutIt x,const T& vold, const T& vnew);
replace_if <algorithm> 將指定范圍內所有操作結果為true的元素用新值代替
函數原形 template<class FwdIt, class Pred, class T> void replace_if(FwdIt first, FwdIt last,Pred pr, const T& val);
replace_copy_if <algorithm> 與replace_if,不過將結果寫入另一個容器
函數原形 template<class InIt, class OutIt, class Pred, class T> OutIt replace_copy_if(InIt first, InIt last, OutIt x, Pred pr, const T& val);
swap <algorithm> 交換存儲在兩個對象中的值
函數原形 template<class T> void swap(T& x, T& y);
swap_range <algorithm> 將指定范圍內的元素與另一個序列元素值進行交換
函數原形 template<class FwdIt1, class FwdIt2> FwdIt2 swap_ranges(FwdIt1 first, FwdIt1 last, FwdIt2 x);
unique <algorithm> 清除序列中重復元素,和remove類似,它也不能真正刪除元素。重載版本使用自定義比較操作
函數原形 template<class FwdIt> FwdIt unique(FwdIt first, FwdIt last);
template<class FwdIt, class Pred> FwdIt unique(FwdIt first, FwdIt last, Pred pr);
unique_copy <algorithm> 與unique類似,不過把結果輸出到另一個容器
函數原形 template<class InIt, class OutIt> OutIt unique_copy(InIt first, InIt last, OutIt x);
template<class InIt, class OutIt, class Pred> OutIt unique_copy(InIt first, InIt last, OutIt x, Pred pr);

生成和變異算法(6個)

函數名 頭文件 函數功能
fill <algorithm> 將輸入值賦給標志范圍內的所有元素
函數原形 template<class FwdIt, class T> void fill(FwdIt first, FwdIt last, const T& x);
fill_n <algorithm> 將輸入值賦給first到first+n范圍內的所有元素
函數原形 template<class OutIt, class Size, class T> void fill_n(OutIt first, Size n, const T& x);
for_each <algorithm> 用指定函數依次對指定范圍內所有元素進行迭代訪問,返回所指定的函數類型。該函數不得修改序列中的元素
函數原形 template<class InIt, class Fun> Fun for_each(InIt first, InIt last, Fun f);
generate <algorithm> 連續調用輸入的函數來填充指定的范圍
函數原形 template<class FwdIt, class Gen> void generate(FwdIt first, FwdIt last, Gen g);
generate_n <algorithm> 與generate函數類似,填充從指定iterator開始的n個元素
函數原形 template<class OutIt, class Pred, class Gen> void generate_n(OutIt first, Dist n, Gen g);
transform <algorithm> 將輸入的操作作用與指定范圍內的每個元素,并產生一個新的序列。重載版本將操作作用在一對元素上,另外一個元素來自輸入的另外一個序列。結果輸出到指定容器
函數原形 template<class InIt, class OutIt, class Unop> OutIt transform(InIt first, InIt last, OutIt x, Unop uop);
template<class InIt1, class InIt2, class OutIt, class Binop> OutIt transform(InIt1 first1, InIt1 last1, InIt2 first2,OutIt x, Binop bop);

算數算法(4個)

函數名 頭文件 函數功能
accumulate <numeric> iterator對標識的序列段元素之和,加到一個由val指定的初始值上。重載版本不再做加法,而是傳進來的二元操作符被應用到元素上
函數原形 template<class InIt, class T> T accumulate(InIt first, InIt last, T val);
template<class InIt, class T, class Pred> T accumulate(InIt first, InIt last, T val, Pred pr);
partial_sum <numeric> 創建一個新序列,其中每個元素值代表指定范圍內該位置前所有元素之和。重載版本使用自定義操作代替加法
函數原形 template<class InIt, class OutIt> OutIt partial_sum(InIt first, InIt last,OutIt result);
template<class InIt, class OutIt, class Pred> OutIt partial_sum(InIt first, InIt last,OutIt result, Pred pr);
product <numeric> 對兩個序列做內積(對應元素相乘,再求和)并將內積加到一個輸入的初始值上。重載版本使用用戶定義的操作
函數原形 template<class InIt1, class InIt2, class T> T product(InIt1 first1, InIt1 last1,Init2 first2, T val);
template<class InIt1, class InIt2, class T,class Pred1, class Pred2> T product(InIt1 first1, InIt1 last1,Init2 first2, T val, Pred1 pr1, Pred2 pr2);
adjacent_difference <numeric> 創建一個新序列,新序列中每個新值代表當前元素與上一個元素的差。重載版本用指定二元操作計算相鄰元素的差
函數原形 template<class InIt, class OutIt> OutIt adjacent_difference(InIt first, InIt last,OutIt result);
template<class InIt, class OutIt, class Pred> OutIt adjacent_difference(InIt first, InIt last,OutIt result, Pred pr);

posted on 2017-05-26 09:18 FongLuo 閱讀(254) 評論(0)  編輯 收藏 引用 所屬分類: STLC/C++

<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

導航

常用鏈接

留言簿

隨筆分類(11)

隨筆檔案(79)

文章檔案(1)

收藏夾(38)

學習網站

一般網站

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品久久久久秋霞鲁丝| 久久精品亚洲一区二区| 欧美精品v日韩精品v国产精品| 永久555www成人免费| 欧美夫妇交换俱乐部在线观看| 欧美不卡一区| 亚洲综合色婷婷| 欧美一区二区三区免费看| 亚洲福利视频一区| 亚洲精品免费一区二区三区| 欧美午夜不卡| 美女91精品| 欧美日韩精品久久| 久久精品国内一区二区三区| 免费观看成人www动漫视频| 亚洲无玛一区| 欧美资源在线| 中国亚洲黄色| 久久精品国产视频| 一本一本大道香蕉久在线精品| 亚洲午夜精品一区二区| 亚洲国产高清自拍| 亚洲一区二区在线播放| 最新国产乱人伦偷精品免费网站| 一区二区三区欧美亚洲| 亚洲国产欧美在线人成| 亚洲综合色丁香婷婷六月图片| 亚洲成在人线av| 亚洲综合清纯丝袜自拍| 日韩视频中文字幕| 久久精品一区二区国产| 亚洲男人天堂2024| 欧美a级大片| 久久欧美肥婆一二区| 欧美新色视频| 亚洲欧洲在线视频| 黄色工厂这里只有精品| 一区二区三区久久| 亚洲麻豆视频| 久久综合伊人77777麻豆| 欧美在线综合视频| 欧美视频在线观看| 日韩午夜在线视频| 亚洲精品一区中文| 蜜臀久久99精品久久久画质超高清| 欧美在线观看你懂的| 欧美午夜精品久久久| 亚洲精品视频一区二区三区| 亚洲高清视频在线| 久久手机免费观看| 久久免费视频观看| 国产三级精品在线不卡| 亚洲欧美激情诱惑| 亚洲欧美一区二区三区极速播放| 欧美日韩国产91| 亚洲日本中文字幕| 亚洲美女在线看| 欧美精品亚洲精品| 亚洲人www| 一区二区三区国产盗摄| 欧美日韩国产一区精品一区 | 亚洲一区二区高清| 欧美日韩国产综合新一区| 亚洲黄色在线看| 99精品视频免费全部在线| 欧美二区在线| 91久久精品国产91久久| 一本色道**综合亚洲精品蜜桃冫| 欧美精品在线观看| 夜夜狂射影院欧美极品| 亚洲欧美日韩国产综合在线| 国产精品美女久久久| 午夜久久资源| 欧美超级免费视 在线| 亚洲激情一区二区三区| 欧美日本亚洲视频| 亚洲一区二区三区午夜| 久久精品国产欧美亚洲人人爽| 国产尤物精品| 美女在线一区二区| 99爱精品视频| 久久精品99国产精品| 亚洲第一综合天堂另类专| 欧美精品aa| 亚洲免费在线精品一区| 男男成人高潮片免费网站| 亚洲精选视频免费看| 国产精品xxxxx| 久久久不卡网国产精品一区| 亚洲国产欧美一区| 午夜免费在线观看精品视频| 激情综合久久| 欧美日韩在线免费| 欧美一级视频| 亚洲日本一区二区三区| 欧美在线观看视频在线| 亚洲人成在线观看网站高清| 国产精品草草| 免费不卡中文字幕视频| 亚洲视频精选在线| 欧美激情一区二区三区全黄| 午夜一区不卡| 亚洲第一网站| 欧美性片在线观看| 美国十次成人| 欧美一区二区三区电影在线观看| 亚洲国产精品第一区二区三区| 亚洲一区二区三区四区中文| 在线观看av一区| 国产精品私人影院| 久久免费视频在线| 亚洲综合电影| 亚洲国产精品激情在线观看| 欧美与欧洲交xxxx免费观看| 99精品国产在热久久婷婷| 国内精品久久久久久 | 久久久精品日韩欧美| 一级日韩一区在线观看| 欧美中文字幕在线视频| av成人国产| 欧美激情视频给我| 麻豆国产精品777777在线| 夜夜狂射影院欧美极品| 久久久亚洲国产美女国产盗摄| 国产精品地址| 亚洲精品看片| 欧美在线观看网址综合| 亚洲黄一区二区| 欧美高清在线一区二区| 亚洲国产91色在线| 久久影院亚洲| 美女日韩在线中文字幕| 在线午夜精品| 美女亚洲精品| 欧美在线啊v| 99热在线精品观看| 久久精品视频亚洲| 欧美一级网站| 性色av一区二区三区在线观看 | 国产毛片一区二区| 欧美午夜精品理论片a级按摩 | 国产精品老牛| 蜜桃av久久久亚洲精品| 久久久久国内| 久久深夜福利免费观看| 久久午夜视频| 美女网站在线免费欧美精品| 理论片一区二区在线| 你懂的国产精品永久在线| 欧美大片在线看| 亚洲欧洲日本国产| 日韩香蕉视频| 亚洲欧美变态国产另类| 久久精品国产久精国产思思| 久久人人97超碰国产公开结果| 老色鬼久久亚洲一区二区| 欧美国产成人精品| 欧美视频一区二区三区四区| 国产精品女主播| 激情婷婷亚洲| 日韩网站在线观看| 亚洲欧美一区二区激情| 久久久久久久综合| 亚洲丁香婷深爱综合| 一区二区三区国产精品| 欧美有码在线视频| 欧美成人精品激情在线观看| 欧美亚男人的天堂| 精品88久久久久88久久久| 亚洲精品一区二区三区四区高清| 亚洲一区二区三区高清不卡| 久久久久久久综合狠狠综合| 亚洲大片免费看| 亚洲免费中文字幕| 免费视频一区| 国产精品一二| 亚洲精品日日夜夜| 欧美资源在线| 亚洲激情一区二区| 久久成人国产精品| 欧美视频中文字幕| 亚洲国产成人不卡| 亚洲综合视频网| 亚洲国产99精品国自产| 亚洲欧美日韩视频一区| 欧美激情一区在线| 国产亚洲欧美一级| 亚洲永久在线| 欧美激情视频给我| 中文日韩欧美| 欧美国产第一页| 性感少妇一区| 国产精品草莓在线免费观看| 亚洲人成久久| 久久综合网络一区二区| 亚洲欧美乱综合| 欧美日韩一区二区在线播放| 亚洲国产精品久久久| 欧美一级专区免费大片| 亚洲毛片在线|