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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ unordered_map 使用详解(含C++20新特性)

發布時間:2024/2/28 c/c++ 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ unordered_map 使用详解(含C++20新特性) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

查找元素

迭代器

容量

修改操作

通接口

哈希策略

觀察器

std::swap(std::unordered_map)

std::erase_if?(std::unordered_map)


簡介

本篇博客介紹C++常用的無序關聯容器unordered_mapunordered_map是C++11正式加入的對hash_map的官方實現(之前標準C++沒有hash_map的官方實現,我們使用的STL的hash_map并不是官方的從名字可以看出這個結構是無序的,底層設計思想和STL的hash_map一樣。元素在內部不以任何特定順序排序,而是進桶中。元素放進哪個桶完全依賴于其鍵的哈希。這允許對單獨元素的快速訪問,因為一旦計算哈希,則它準確指代元素所放進的桶。unordered_map搜索、插入和元素移除擁有平均常數時間復雜度。

?

查找元素

at()用于訪問指定元素

T&?at(?const?Key&?key?); const?T&?at(?const?Key&?key?)?const;

返回到等于?key?的鍵的元素的引用。若無該元素,則拋出 std::out_of_range?類型異常。

?

operator []用于訪問或插入元素

T&?operator[](?const?Key&?key?); T&?operator[](?Key&&?key?);

返回等于?key?的鍵的值的引用。如果該鍵不存在,則執行插入,反之,則覆蓋原來的值。

#include <iostream> #include <string> #include <vector> #include <unordered_map>int main() {std::unordered_map<char, int> letter_counts {{'a', 27}, {'b', 3}, {'c', 1}};std::cout << "initially:\n";for (const auto &pair : letter_counts) {std::cout << pair.first << ": " << pair.second << '\n';}letter_counts['b'] = 42; // 更新既存值letter_counts['x'] = 9; // 插入新值std::cout << "after modifications:\n";for (const auto &pair : letter_counts) {std::cout << pair.first << ": " << pair.second << '\n';}// 統計每個詞的出現數// (首次調用 operator[] 以零初始化計數器)std::unordered_map<std::string, size_t> word_map;for (const auto &w : { "this", "sentence", "is", "not", "a", "sentence","this", "sentence", "is", "a", "hoax"}) {++word_map[w];}for (const auto &pair : word_map) {std::cout << pair.second << " occurrences of word '" << pair.first << "'\n";} }輸出: initially: a: 27 b: 3 c: 1 after modifications: a: 27 b: 42 c: 1 x: 9 2 occurrences of word 'a' 1 occurrences of word 'hoax' 2 occurrences of word 'is' 1 occurrences of word 'not' 3 occurrences of word 'sentence' 2 occurrences of word 'this'

?

count() 返回特定鍵的元素數量

(1)size_type count(?const?Key&?key?)?const; (2)template<?class?K?>?size_type count(?const?K&?x?)?const;

(1)?返回等于指定參數?key?的鍵的元素數,因為此容器不允許重復,故返回值為 0?或 1?。

(2)?返回鍵等于指定參數?x?的元素數。此重載僅若有限定標識?Hash::is_transparent?與?KeyEqual::is_transparent?均合法并指代類型才參與重載決議。這假設能用?K?和?Key?類型一起調用這種?Hash?,還有?KeyEqual?是通透的,進而允許不用構造?Key?的實例就調用此函數。

?

find()尋找特定鍵的元素

(1)iterator find(?const?Key&?key?); (2)const_iterator find(?const?Key&?key?)?const; (3)template<?class?K?>?iterator find(?const?K&?x?); (4)template<?class?K?>?const_iterator find(?const?K&?x?)?const;

(1-2)?尋找鍵等于?key?的的元素。

(3-4)?尋找鍵等于值?x?的元素。此重載僅若有限定標識?Hash::is_transparent?與?KeyEqual::is_transparent?均合法并指代類型才參與重載決議。這假設能用?K?和?Key?類型一起調用這種?Hash?,還有?KeyEqual?是通透的,進而允許不用構造?Key?的實例就調用此函數。

#include <iostream> #include <unordered_map>int main() { // 簡單比較演示std::unordered_map<int,char> example = {{1,'a'},{2,'b'}};auto search = example.find(2);if (search != example.end()) {std::cout << "Found " << search->first << " " << search->second << '\n';} else {std::cout << "Not found\n";} }輸出: Found 2 b

?

contains()可檢查容器是否含有特定鍵的元素

(1)bool?contains(?const?Key&?key?)?const; (2)template<?class?K?>?bool?contains(?const?K&?x?)?const;

(1)?檢查容器中是否有鍵等于?key?的元素。

(2)?檢查是否有鍵等于值?x?的元素。此重載僅若有限定標識?Hash::is_transparent?與?KeyEqual::is_transparent?均合法并指代類型才參與重載決議。這假設能用?K?和?Key?類型一起調用這種?Hash?,還有?KeyEqual?是通透的,進而允許不用構造?Key?的實例就調用此函數。

#include <iostream> #include <unordered_map>int main() { std::unordered_map<int,char> example = {{1,'a'},{2,'b'}};if (example.contains(2)) {std::cout << "Found\n";} else {std::cout << "Not found\n";} }輸出: Found

find()的返回值是迭代器,若有元素,可以直接通過返回的迭代器獲取元素信息。 而contains()的返回值是bool型,只用于確定是否包含該元素。

?

equal_range()返回匹配特定鍵的元素范圍

(1)std::pair<iterator,iterator>?equal_range(?const?Key&?key?); (2)std::pair<const_iterator,const_iterator>?equal_range(?const?Key&?key?)?const; (3)template<?class?K?>std::pair<iterator,iterator>?equal_range(?const?K&?x?); (4)template<?class?K?>std::pair<const_iterator,const_iterator>?equal_range(?const?K&?x?)?const;

(1-2)?返回容器中所有鍵等于?key?的元素范圍。范圍以兩個迭代器定義,第一個指向所需范圍的首元素,而第二個指向范圍的尾后一位元素。

(3-4)?返回含有容器中所有鍵等于?x?的元素的范圍。此重載僅若有限定標識?Hash::is_transparent?與?KeyEqual::is_transparent?均合法并指代類型才參與重載決議。這假設能用?K?和?Key?類型一起調用這種?Hash?,還有?KeyEqual?是通透的,進而允許不用構造?Key?的實例就調用此函數。

#include <iostream> #include <unordered_map>int main() { std::unordered_map<int,char> map = {{1,'a'},{1,'b'},{1,'d'},{2,'b'}};auto range = map.equal_range(1);for (auto it = range.first; it != range.second; ++it) {std::cout << it->first << ' ' << it->second << '\n';} }輸出: 1 a

?

迭代器

begin() & cbegine()

iterator begin()?noexcept; const_iterator begin()?const?noexcept; const_iterator cbegin()?const?noexcept;

返回指向?unordered_map?首元素的迭代器。若?unordered_map?為空,則返回的迭代器將等于 end()

?

end() & cend()

iterator end()?noexcept; const_iterator end()?const?noexcept; const_iterator cend()?const?noexcept;

返回指向?unordered_map?最后一個元素的之后的迭代器。此元素表現為占位符;試圖訪問它導致未定義行為。

#include <cmath> #include <iostream> #include <unordered_map>struct Node { double x, y; };int main() {Node nodes[3] = { {1, 0}, {2, 0}, {3, 0} };// mag 是將 Node 的地址映射到其在平面中的模的映射std::unordered_map<Node *, double> mag = {{ nodes, 1 },{ nodes + 1, 2 },{ nodes + 2, 3 }};// 將每個 y 坐標從 0 更改到模for(auto iter = mag.begin(); iter != mag.end(); ++iter){auto cur = iter->first; // 指向 Node 的指針cur->y = mag[cur]; // 可以也使用 cur->y = iter->second;}// 更新并打印每個結點的模for(auto iter = mag.begin(); iter != mag.end(); ++iter){auto cur = iter->first;mag[cur] = std::hypot(cur->x, cur->y);std::cout << "The magnitude of (" << cur->x << ", " << cur->y << ") is ";std::cout << iter->second << '\n';}// 以基于范圍的 for 循環重復上述者for(auto i : mag) {auto cur = i.first;cur->y = i.second;mag[cur] = std::hypot(cur->x, cur->y);std::cout << "The magnitude of (" << cur->x << ", " << cur->y << ") is ";std::cout << mag[cur] << '\n';// 注意與 std::cout << iter->second << '\n'; 相反,上述的 // std::cout << i.second << '\n'; 不會打印更新的模} }輸出: The magnitude of (1, 1) is 1.41421 The magnitude of (2, 2) is 2.82843 The magnitude of (3, 3) is 4.24264 The magnitude of (1, 1.41421) is 1.73205 The magnitude of (2, 2.82843) is 3.4641 The magnitude of (3, 4.24264) is 5.19615

?

容量

empty() 用于檢查容器是否為空

bool?empty()?const?noexcept; [[nodiscard]]?bool?empty()?const?noexcept;

?

size() 返回容納的元素數量

size_type size()?const?noexcept;

返回容器中的元素數,即std::distance(begin(), end())?。

int main() { std::unordered_map<int,char> nums {{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}};std::cout << "nums contains " << nums.size() << " elements.\n"; }輸出: nums contains 4 elements.

?

max_size() 返回最大可容納的元素數

size_type max_size()?const?noexcept;

返回根據系統或庫實現限制的容器可包含的元素最大數量,即對于最大容器的 std::distance(begin(), end())??。

#include <iostream> #include <unordered_map>int main() {std::unordered_map<char,char> s;std::cout << "Maximum size of a 'unordered_map' is " << s.max_size() << "\n"; }輸出: Maximum size of a 'unordered_map' is 768614336404564650

?

修改操作

clear()

void?clear()?noexcept;

從容器去除所有元素。此調用后?size()?返回零。非法化任何指代所含元素的引用、指針或迭代器。可能亦非法化尾后迭代器。

?

insert()

(1)std::pair<iterator,bool>?insert(?const?value_type&?value?);std::pair<iterator,bool>?insert(?value_type&&?value?); (2)template<?class?P?>std::pair<iterator,bool>?insert(?P&&?value?); (3)iterator insert(?const_iterator hint,?const?value_type&?value?);iterator insert(?const_iterator hint, value_type&&?value?); (4)template<?class?P?>iterator insert(?const_iterator hint, P&&?value?); (5)template<?class?InputIt?>void?insert(?InputIt first, InputIt last?); (6)void?insert(?std::initializer_list<value_type>?ilist?); (7)insert_return_type insert(node_type&&?nh); (8)iterator insert(const_iterator hint, node_type&&?nh);

若容器尚未含有帶等價關鍵的元素,則插入元素到容器中。

(1-2)?插入?value?。重載?(2)?等價于?emplace(std::forward<P>(value))?,且僅若?std::is_constructible<value_type, P&&>::value?==?true?才參與重載決議。

(3-4)?插入?value?,以?hint?為應當開始搜索的位置的非強制建議。重載?(4)?等價于?emplace_hint(hint,?std::forward<P>(value))?,且僅若?std::is_constructible<value_type, P&&>::value?==?true?才參與重載決議。

(5)?插入來自范圍?[first, last)?的元素。若范圍中的多個元素擁有比較等價的關鍵,則插入哪個元素是未指定的。

(6)?插入來自 initializer_list?ilist?的元素。若范圍中的多個元素擁有比較等價的關鍵,則插入哪個元素是未指定的。

(7)?若?nh?是空的結點句柄,則不做任何事。否則插入?nh?所占有的元素到容器,若容器尚未含有擁有等價于?nh.key()?的關鍵的元素。若?nh?非空且?get_allocator()?!=?nh.get_allocator()?則行為未定義。

(8)?若?nh?是空的結點句柄,則不做任何事并返回尾迭代器。否則,插入?nh?所占有的元素到容器,若容器尚未含有擁有等價于?nh.key()?的關鍵的元素,并返回指向擁有等于?nh.key()?的關鍵的元素的迭代器(無關乎插入成功還是失敗)。若插入成功,則從?nh?移動,否則它保持該元素的所有權。元素被插入到盡可能接近?hint?的位置。若?nh?非空且?get_allocator()?!=?nh.get_allocator()?則行為未定義。

若因插入發生重哈希,則所有迭代器都被非法化。否則迭代器不受影響。引用不受影響。重哈希僅若新元素數量大于?max_load_factor()*bucket_count()?才發生。若插入成功,則在結點把柄保有元素時獲得的指向該元素的指針和引用被非法化,而在提取前獲得的指向元素的指針和引用變得合法。?

#include <string> #include <iostream> #include <unordered_map>int main () {std::unordered_map<int, std::string> dict = {{1, "one"}, {2, "two"}};dict.insert({3, "three"});dict.insert(std::make_pair(4, "four"));dict.insert({{4, "another four"}, {5, "five"}});bool ok = dict.insert({1, "another one"}).second;std::cout << "inserting 1 -> \"another one\" " << (ok ? "succeeded" : "failed") << '\n';std::cout << "contents:\n";for(auto& p: dict)std::cout << " " << p.first << " => " << p.second << '\n'; }輸出: inserting 1 -> "another one" failed contents:5 => five1 => one2 => two3 => three4 => four

?

insert_or_assign()

(1)template?<class?M>pair<iterator,?bool>?insert_or_assign(const?key_type&?k, M&&?obj); (2)template?<class?M>pair<iterator,?bool>?insert_or_assign(key_type&&?k, M&&?obj); (3)template?<class?M>iterator insert_or_assign(const_iterator hint,?const?key_type&?k, M&&?obj); (4)template?<class?M>iterator insert_or_assign(const_iterator hint, key_type&&?k, M&&?obj);

(1,3)?若等價于?k?的鍵已存在于容器中,則賦值?std::forward<M>(obj)?給對應于鍵?k?的?mapped_type?。若鍵不存在,則如同用?insert?插入從?value_type(k,?std::forward<M>(obj))?構造的新值。

(2,4)?同?(1,3)?,除了從?value_type(std::move(k),?std::forward<M>(obj))?構造被映射值。

若插入發生且導致容器的重哈希,則所有迭代器被非法化。否則迭代器不受影響。重哈希僅若新元素數量大于?max_load_factor()*bucket_count()?才發生。

#include <iostream> #include <unordered_map> #include <string>int main() {std::unordered_map<std::string, std::string> myMap;myMap.insert_or_assign("a", "apple" );myMap.insert_or_assign("b", "bannana" );myMap.insert_or_assign("c", "cherry" );myMap.insert_or_assign("c", "clementine");for (const auto &pair : myMap) {std::cout << pair.first << " : " << pair.second << '\n';} }輸出: c : clementine a : apple b : bannana

?

emplace()

template<?class...?Args?> std::pair<iterator,bool>?emplace(?Args&&...?args?);

若容器中無擁有該關鍵的元素,則插入以給定的?args?原位構造的新元素到容器。

細心地使用?emplace?允許在構造新元素的同時避免不必要的復制或移動操作。 準確地以與提供給?emplace?者相同的參數,通過std::forward<Args>(args)...?轉發調用新元素(即?std::pair<const?Key, T>?)的構造函數。 即使容器中已有擁有該關鍵的元素,也可能構造元素,該情況下新構造的元素將被立即銷毀。

若因插入發生重哈希,則所有迭代器都被非法化。否則迭代器不受影響。引用不被非法化。重哈希僅若新元素數量大于?max_load_factor()*bucket_count()?才發生。

#include <iostream> #include <utility> #include <string> #include <unordered_map>int main() {std::unordered_map<std::string, std::string> m;// 使用 pair 的移動構造函數m.emplace(std::make_pair(std::string("a"), std::string("a")));// 使用 pair 的轉換移動構造函數m.emplace(std::make_pair("b", "abcd"));// 使用 pair 的模板構造函數m.emplace("d", "ddd");// 使用 pair 的逐片構造函數m.emplace(std::piecewise_construct,std::forward_as_tuple("c"),std::forward_as_tuple(10, 'c'));// C++17 起,能使用 m.try_emplace("c", 10, 'c');for (const auto &p : m) {std::cout << p.first << " => " << p.second << '\n';} }輸出: a => a b => abcd c => cccccccccc d => ddd #include <unordered_map> #include <iostream> #include <utility>int main() {std::unordered_map<int, int> numbers;std::cout << "Initially, numbers.empty(): " << numbers.empty() << '\n';numbers.emplace(42, 13);numbers.insert(std::make_pair(13317, 123)); std::cout << "After adding elements, numbers.empty(): " << numbers.empty() << '\n'; }輸出: Initially, numbers.empty(): 1 After adding elements, numbers.empty(): 0

?

emplace_hint()

template?<class...?Args> iterator emplace_hint(?const_iterator hint, Args&&...?args?);

插入新元素到容器,以?hint?為應當放置新元素位置的建議。原位構造元素,即不進行復制或移動操作。

準確地以與提供給函數者相同的參數,以?std::forward<Args>(args)...?轉發調用元素類型(?value_type?即?std::pair<const?Key, T>?)的構造函數。

若因插入發生重哈希,則所有迭代器都被非法化。否則迭代器不受影響。引用不被非法化。重哈希僅若新元素數量大于?max_load_factor()*bucket_count()?才發生。

?

try_emplace()

(1)template?<class...?Args>pair<iterator,?bool>?try_emplace(const?key_type&?k, Args&&...?args); (2)template?<class...?Args>pair<iterator,?bool>?try_emplace(key_type&&?k, Args&&...?args); (3)template?<class...?Args>iterator try_emplace(const_iterator hint,?const?key_type&?k, Args&&...?args); (4)template?<class...?Args>iterator try_emplace(const_iterator hint, key_type&&?k, Args&&...?args);

(1)?若容器中已存在等價于?k?的關鍵,則不做任何事。否則行為類似?emplace?,除了以?value_type(std::piecewise_construct, std::forward_as_tuple(k), std::forward_as_tuple(std::forward<Args>(args)...))?構造元素。

(2)?若容器中已存在等價于?k?的關鍵,則不做任何事。否則行為類似?emplace?,除了以?value_type(std::piecewise_construct, std::forward_as_tuple(std::move(k)), std::forward_as_tuple(std::forward<Args>(args)...))?構造元素。

(3)?若容器中已存在等價于?k?的關鍵,則不做任何事。否則行為類似?emplace_hint?,除了以?value_type(std::piecewise_construct, std::forward_as_tuple(k), std::forward_as_tuple(std::forward<Args>(args)...))?構造元素。

(4)?若容器中已存在等價于?k?的關鍵,則不做任何事。否則行為類似?emplace_hint?,除了以?value_type(std::piecewise_construct, std::forward_as_tuple(std::move(k)), std::forward_as_tuple(std::forward<Args>(args)...))?構造元素。

若因插入發生重哈希,則所有迭代器都被非法化。否則迭代器不受影響。引用不被非法化。重哈希僅若新元素數量大于?max_load_factor()*bucket_count()?才發生。

#include <iostream> #include <utility> #include <string>#include <unordered_map> int main() {using namespace std::literals;std::unordered_map<std::string, std::string> m;m.try_emplace("a", "a"s);m.try_emplace("b", "abcd");m.try_emplace("c", 10, 'c');m.try_emplace("c", "Won't be inserted");for (const auto &p : m) {std::cout << p.first << " => " << p.second << '\n';} }輸出: a => a b => abcd c => cccccccccc

?

erase()

(1)iterator erase(?const_iterator pos?); (2)iterator erase(?const_iterator first, const_iterator last?); (3)size_type erase(?const?key_type&?key?);

從容器移除指定的元素。

(1)?移除位于?pos?的元素。

(2)?移除范圍?[first; last)?中的元素,它必須是?*this?中的合法范圍。

(3)?移除鍵等于?key?的元素(若存在一個)。

到被去除元素的引用和迭代器被非法化,其他迭代器和引用不被非法化。迭代器?pos?必須合法且可解引用,從而使得?end()?迭代器(合法,但不可解引用)不能用作?pos?所用的值。保留未被擦除的元素順序(這使得可能在迭代通過容器時擦除單獨的元素)。

#include <unordered_map> #include <iostream> int main() {std::unordered_map<int, std::string> c = {{1, "one"}, {2, "two"}, {3, "three"},{4, "four"}, {5, "five"}, {6, "six"}};// 從 c 擦除所有奇數for(auto it = c.begin(); it != c.end(); )if(it->first % 2 == 1)it = c.erase(it);else++it;for(auto& p : c)std::cout << p.second << ' '; }輸出: two four six

?

swap()

void?swap(?unordered_map&?other?); void?swap(?unordered_map&?other?)?noexcept();

將內容與?other?的交換,不在單個元素上調用任何移動、復制或交換操作。所有迭代器和引用保持合法,尾后迭代器被非法化。

Hash?和?KeyEqual?對象必須可交換?(Swappable)?,并用非成員?swap?的非限定調用交換它們。

?

extract()

(1)node_type extract(?const_iterator position?); (2)node_type extract(?const?key_type&?x?);

(1)?解鏈含?position?所指向元素的結點并返回占有它的結點句柄

(2)?若容器擁有元素而其關鍵等于?x?,則從容器解鏈該元素并返回占有它的結點句柄。否則,返回空結點把柄。任何情況下,均不復制或移動元素,只重指向容器結點的內部指針。

釋出結點只會非法化指向被釋出元素的迭代器,并保持未被去除元素的相對順序。指向被釋出元素的指針和引用保持合法,但在結點句柄占有該元素時不能使用:若元素被插入容器,就能使用它們。

注意:extract 是更換鍵而不重分配的唯一方式。

unordered_map<int, string> m{{1, "mango"}, {2, "papaya"}, {3, "guava"}}; auto nh = m.extract(2); nh.key() = 4; m.insert(move(nh));

?

merge()

(1)template<class?H2,?class?P2>void?merge(std::unordered_map<Key, T, H2, P2, Allocator>&?source); (2)template<class?H2,?class?P2>void?merge(std::unordered_map<Key, T, H2, P2, Allocator>&&?source); (3)template<class?H2,?class?P2>void?merge(std::unordered_multimap<Key, T, H2, P2, Allocator>&?source); (4)template<class?H2,?class?P2>void?merge(std::unordered_multimap<Key, T, H2, P2, Allocator>&&?source);

試圖釋出("接合")?source?中每個元素,并用?*this?的哈希函數和關鍵相等謂詞插入到?*this?。 若?*this?中有元素,其關鍵等價于來自?source?中元素的關鍵,則不從?source?釋出該元素。 不復制或移動元素,只會重指向容器結點的內部指針。指向被轉移元素的所有指針和引用保持合法,但現在指代到?*this?中而非到?source?中。指代被轉移元素的迭代器和所有指代到?*this?的迭代器被非法化。指向留在?source?中元素的迭代器保持合法。若?get_allocator()?!=?source.get_allocator()?則行為未定義。

?

通接口

begin()?& cbegin()

local_iterator begin(?size_type n?); const_local_iterator begin(?size_type n?)?const; const_local_iterator cbegin(?size_type n?)?const;

返回指向下標為?n?的桶首元素的迭代器。

?

end() & cend()

local_iterator end(?size_type n?); const_local_iterator end(?size_type n?)?const; const_local_iterator cend(?size_type n?)?const;

返回后隨下標為?n?的桶的最后元素的元素的迭代器。此元素表現為占位符,試圖訪問它會導致未定義行為。

?

bucket_count()?返回容器中的桶數

size_type bucket_count()?const;

?

max_bucket_count()?返回容器由于系統或庫實現限制的能保有的最大桶數

size_type max_bucket_count()?const;

?

bucket_size()?返回下標為?n?的桶中的元素數

size_type bucket_size(?size_type n?)?const;

?

bucket()?返回關鍵?key?的桶的下標

size_type bucket(?const?Key&?key?)?const;

始終會在此桶中找到關鍵等于?key?的元素(若存在)。返回值僅對?bucket_count()?返回相同值的容器實例合法。若?bucket_count()?為零則行為未定義。

?

哈希策略

load_factor()?

float?load_factor()?const;

返回每個桶元素的平均數,即?size()?除以?bucket_count()?。

?

max_load_factor()

(1)float?max_load_factor()?const; (2)void?max_load_factor(?float?ml?);

管理最大加載因子(每個桶的平均元素數)。若加載因子超出此閾值,則容器自動增加桶數。

(1) 返回最大加載因子。

(2) 設置最大加載因子為?ml?。

?

rehash()

void?rehash(?size_type count?);

設置桶數為?count?并重哈希容器,即考慮桶總數已改變,再把元素放到適當的桶中。若新的桶數使加載因子大于最大加載因子(?count?<?size()?/?max_load_factor()?),則新桶數至少為?size()?/?max_load_factor()?。

?

reserve()

void?reserve(?size_type count?);

設置桶數為適應至少?count?個元素,而不超出最大加載因子所需的數,并重哈希容器,即考慮桶數已更改后將元素放進適合的桶。等效地調用?rehash(std::ceil(count?/?max_load_factor()))?。

?

觀察器

hash_function()?返回對關鍵哈希的函數

hasher hash_function()?const;

?

key_eq()?返回比較關鍵相等性的函數

key_equal key_eq()?const;

?

std::swap(std::unordered_map)

(1)template<?class?Key,?class?T,?class?Hash,?class?KeyEqual,?class?Alloc?>void?swap(?unordered_map<Key,T,Hash,KeyEqual,Alloc>&?lhs,?unordered_map<Key,T,Hash,KeyEqual,Alloc>&?rhs?); (2)template<?class?Key,?class?T,?class?Hash,?class?KeyEqual,?class?Alloc?>void?swap(?unordered_map<Key,T,Hash,KeyEqual,Alloc>&?lhs,?unordered_map<Key,T,Hash,KeyEqual,Alloc>&?rhs?)?noexcept(/* see below */);

?std::unordered_map?特化?std::swap?算法。交換?lhs?與?rhs?的內容。調用?lhs.swap(rhs)?。

?

std::erase_if?(std::unordered_map)

template<?class?Key,?class?T,?class?Hash,?class?KeyEqual,?class?Alloc,?class?Pred?> typename?std::unordered_map<Key,T,Hash,KeyEqual,Alloc>::size_typeerase_if(std::unordered_map<Key,T,Hash,KeyEqual,Alloc>&?c, Pred pred);? ?(C++20 起)

從容器中去除所有滿足謂詞?pred?的元素。等價于:

auto old_size = c.size();for (auto i = c.begin(), last = c.end(); i != last; ) {if (pred(*i)) {i = c.erase(i);} else {++i;}} return old_size - c.size();

?

總結

以上是生活随笔為你收集整理的C++ unordered_map 使用详解(含C++20新特性)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国语黄色片 | www.黄色片网站 | 久久色中文字幕 | 日韩精品 在线视频 | 国产成人性色生活片 | 国产精品毛片一区二区 | 99久久精品免费看国产一区二区三区 | 黄色成人影视 | 国产精品久久久久久久av大片 | 久久久久国产精品免费 | 国产免费视频一区二区裸体 | 久久久久久久久国产 | 最近2019年日本中文免费字幕 | 欧美日韩在线电影 | 婷婷福利影院 | 97人人澡人人爽人人模亚洲 | 一区二区三区在线看 | 精品99久久 | 91精品啪在线观看国产81旧版 | se婷婷 | 久久久午夜精品理论片中文字幕 | 日韩专区在线 | 亚洲国产美女精品久久久久∴ | 手机在线观看国产精品 | 日本中文字幕免费观看 | 91福利专区 | 久久综合中文字幕 | 久久免费视频网站 | 夜色成人网 | 免费在线观看av网址 | 人人爽人人搞 | 免费视频色| 麻豆视频免费入口 | 99视频在线播放 | 成人一级片免费看 | 日本一区二区免费在线观看 | 亚洲视屏一区 | 精品视频国产 | 手机看片国产日韩 | 久久大片 | 免费在线观看av网站 | 波多野结衣在线播放一区 | 中文字幕在线观看一区二区 | 黄色软件在线看 | 黄色特级毛片 | 国产高清免费 | 少妇性bbb搡bbb爽爽爽欧美 | wwwwww国产| 色99视频| 超碰人人射 | 久久综合九色九九 | 狠狠狠色丁香综合久久天下网 | 麻豆国产视频 | 欧美怡红院| 亚洲在线综合 | 天天色图 | 午夜精品久久久久久久久久 | 99久久久国产精品美女 | 美女禁18| 亚洲爱爱视频 | 国产视频99 | 最新国产精品拍自在线播放 | 亚洲最大av网 | 久久er99热精品一区二区三区 | 国产成人黄色网址 | 日韩久久影院 | 国产五月婷 | 中文字幕在线观看视频一区二区三区 | 91日韩在线视频 | 天天婷婷| 国产亚洲欧美精品久久久久久 | 91看国产| 中文在线最新版天堂 | 国产成人精品一区二区在线观看 | 亚洲国产精品va在线看 | 日日夜夜操操操操 | 狠狠色伊人亚洲综合网站野外 | 欧美日韩视频观看 | 中文字幕在线免费看线人 | 久草视频在线看 | 96久久欧美麻豆网站 | 国产在线观看 | 在线免费观看羞羞视频 | 日韩亚洲在线视频 | 天天干,天天插 | 国产在线免费 | 又黄又色又爽 | 五月天天色 | 欧美日韩国产精品一区二区三区 | 99视频播放 | 91在线视频观看免费 | 欧美成a人片在线观看久 | 在线电影中文字幕 | 欧美日韩亚洲在线观看 | 成人资源在线播放 | 日韩欧美高清在线观看 | 中文字幕亚洲在线观看 | 日韩一区二区三区视频在线 | 亚洲永久精品视频 | 免费观看一级一片 | 最近2019好看的中文字幕免费 | 国产精品你懂的在线观看 | 国产精品欧美久久久久天天影视 | 国产精品一区二区62 | 久久在线视频在线 | 成年人毛片在线观看 | 成片人卡1卡2卡3手机免费看 | 极品嫩模被强到高潮呻吟91 | 国产亚洲精品xxoo | 福利久久久| 久久精品国产一区二区电影 | 色视频在线 | 色狠狠婷婷 | 九色精品免费永久在线 | 在线观看免费福利 | 国产一区不卡在线 | 在线免费观看黄色 | 韩国av一区二区三区在线观看 | 中文字幕免费一区 | 日韩久久精品一区二区三区 | 奇米777777| 丁香影院在线 | 国产精品福利在线播放 | 国产精品综合在线观看 | 91女人18片女毛片60分钟 | 中文字幕一区二区三区精华液 | 国产91电影在线观看 | 国产中年夫妇高潮精品视频 | 91精品国产综合久久福利 | 国产精品99久久久久久武松影视 | 久久噜噜少妇网站 | 日韩手机在线观看 | 6080yy精品一区二区三区 | 成人在线视频观看 | 精品国产一区二区三区免费 | 精品国产伦一区二区三区观看说明 | 丁香婷婷色综合亚洲电影 | 99免费在线视频观看 | 亚洲乱码精品久久久 | 日韩欧美高清免费 | 欧美性生活小视频 | 午夜久久久久久久久 | 怡红院成人在线 | 欧美看片 | 国产精品视频在线观看 | 开心激情综合网 | 亚洲精品成人网 | 在线免费观看国产黄色 | 国产午夜激情视频 | 久久国产精品99久久久久 | 免费av的网站 | 日韩av免费网站 | 欧洲亚洲国产视频 | 欧美一级视频免费看 | 91视频这里只有精品 | 麻豆91精品视频 | 国产在线观看国语版免费 | 国产成人一区二区三区影院在线 | 91视频麻豆 | 久久综合色综合88 | 国产免费av一区二区三区 | 欧美亚洲三级 | 久久综合久久综合久久综合 | 色a网| 午夜视频一区二区三区 | 欧美9999| 青青草国产成人99久久 | 亚洲色图美腿丝袜 | 国产操在线 | 99久久超碰中文字幕伊人 | 成人一区影院 | 国产视频一区在线 | 成年人视频在线免费观看 | 亚洲涩综合 | 国产精品美女久久久久久久 | 久草网在线视频 | 黄色1级大片 | 激情 婷婷 | 99在线观看 | 国产xxxx| 91插插插免费视频 | 可以免费观看的av片 | 国产美女在线免费观看 | 国产午夜三级一区二区三 | 97超碰在线资源 | 500部大龄熟乱视频 欧美日本三级 | 久久精品福利 | 久久久久久久久久久影视 | 国产精品午夜av | 国产精品久久久久一区 | 在线天堂中文www视软件 | 欧美了一区在线观看 | 麻豆一区在线观看 | 精品久久1 | 亚洲影院天堂 | 中文字幕资源在线观看 | 久久手机精品视频 | 免费观看十分钟 | 国产成人三级三级三级97 | 中文字幕 国产 一区 | 久久免费在线观看视频 | 天天综合天天做天天综合 | 亚洲一区二区精品3399 | 亚洲精品1区2区3区 超碰成人网 | 成人午夜久久 | 久久色在线观看 | 免费中文字幕在线观看 | 久久精品网 | 一区二区三区在线免费观看视频 | 欧美夫妻生活视频 | 蜜臀av夜夜澡人人爽人人 | 国产精品麻豆欧美日韩ww | 久久一区国产 | 色婷婷狠狠18 | 狠狠躁日日躁狂躁夜夜躁 | 久久久久久久久久久国产精品 | 久久a热6| 69精品久久 | 成人影视免费看 | 天天拍天天操 | 网站在线观看你们懂的 | 一区二区影视 | 六月丁香激情网 | 色婷婷综合久久久久中文字幕1 | av日韩av| 97国产大学生情侣酒店的特点 | 99精品欧美一区二区三区 | 午夜久久久久久久 | 综合色婷婷 | 色99久久 | 亚洲精品中文字幕视频 | 午夜在线免费视频 | 97日日碰人人模人人澡分享吧 | 蜜臀av在线一区二区三区 | 国产成人av电影在线 | 久久成人亚洲欧美电影 | 国产精品v欧美精品v日韩 | 午夜国产一区 | 亚洲欧美日韩一区二区三区在线观看 | 天天操天天吃 | 日韩资源在线 | 亚洲在线视频免费 | 亚洲精品国偷自产在线91正片 | 国产一区在线观看视频 | 中文字幕激情 | 亚洲小视频在线 | h视频日本 | 久操视频在线免费看 | 国内精品久久久久久久久久久久 | 国产美女精品视频 | 色亚洲激情 | 黄色网中文字幕 | 黄色av成人在线观看 | 九九精品久久 | 在线观看不卡视频 | 99在线视频播放 | 日韩精品短视频 | 天天综合在线观看 | 免费看污网站 | 午夜精品影院 | 日韩av视屏在线观看 | 天天色天天爱天天射综合 | 亚洲每日更新 | 亚洲综合最新在线 | 国产在线黄 | 国产精品2020 | 亚洲成人午夜av | 国产午夜三级一区二区三 | 国产午夜精品一区二区三区 | 一级久久精品 | 日韩精品一区二区在线视频 | 人人干人人爽 | 日韩中文字幕免费 | 色爱区综合激月婷婷 | 99精品国产99久久久久久福利 | 人人玩人人添人人澡97 | 特级毛片在线免费观看 | 欧美极品xxxxx| 狠狠干婷婷色 | 亚洲色影爱久久精品 | 伊人久久在线观看 | 国产无套精品久久久久久 | 激情网在线观看 | 夜夜摸夜夜爽 | 欧美一级性生活视频 | 激情视频91 | 日韩黄色在线观看 | 一级成人免费视频 | 日韩精品在线观看av | 国产亚洲精品久久久久久大师 | av不卡免费在线观看 | 在线性视频日韩欧美 | 9992tv成人免费看片 | www91在线 | 久久精精品视频 | 国产精品久久久久久久久毛片 | 亚洲 欧美 变态 国产 另类 | 丰满少妇对白在线偷拍 | 中文视频在线播放 | 国产乱码精品一区二区蜜臀 | 在线国产91 | 日韩欧美在线综合网 | 四虎成人免费观看 | www.com久久 | 国产精品一区二区免费在线观看 | 人人舔人人 | 中文字幕免费看 | av一级一片 | 97超碰超碰久久福利超碰 | 中文字幕在线观看视频免费 | 日韩成人精品在线观看 | 91视频麻豆 | 国产免费三级在线观看 | 国产精品一区二区久久精品爱涩 | 91大神精品视频在线观看 | 亚洲香蕉视频 | www黄色 | 免费色网站| 国产视频在线一区二区 | 免费网站黄 | 亚洲精品在线视频网站 | 日韩欧美电影在线 | 91av免费观看| 九色自拍视频 | av电影在线播放 | 热99在线视频| 亚洲精品无 | 九九导航 | 国产黄| 狠狠的日日 | 国产视频18 | 国产精品一区二区在线免费观看 | www.国产高清 | 日日日日干 | 伊人官网 | 亚洲 中文字幕av | 国产精品婷婷午夜在线观看 | 日韩高清免费在线 | 日韩黄色在线 | 人人澡超碰碰97碰碰碰软件 | 久久网址| 女人18毛片a级毛片一区二区 | 亚洲国产天堂av | 91麻豆免费看 | 中文字幕在线看视频国产中文版 | 狠狠色丁香婷婷综合久小说久 | 日本婷婷色 | 麻豆精品91| 成人免费xyz网站 | 亚洲美女在线一区 | 久久久网址 | 亚洲手机天堂 | 久久久资源 | 久久理论电影 | 国产在线污 | 麻豆国产露脸在线观看 | 黄网站app在线观看免费视频 | 四虎国产精品免费观看视频优播 | 天天操综合网 | 天天综合视频在线观看 | 在线日韩中文字幕 | 欧美一级久久久久 | 精品人妖videos欧美人妖 | 久久久一本精品99久久精品 | 中日韩免费视频 | 亚洲国产一区av | 日韩在线观看视频一区二区三区 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 亚洲国内精品在线 | 国产 日韩 欧美 在线 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 国产一区二区在线播放视频 | 99精品系列 | 天天综合区 | 色网址99 | 国产一级片免费观看 | 国产色婷婷精品综合在线手机播放 | 人成在线免费视频 | 亚洲精品国产精品国自产在线 | 日本99热 | 激情视频一区 | 天天躁日日躁狠狠躁 | 国产在线观看二区 | 亚洲人成精品久久久久 | 91精品国产高清自在线观看 | 国产一级视频在线免费观看 | 久热这里有精品 | 国产白浆视频 | 五月天色站 | 欧美综合在线视频 | 久久99久久99 | 日本丰满少妇免费一区 | 激情综合亚洲精品 | av大片免费 | 一区二区三区 亚洲 | 色在线视频 | 亚洲精品影视 | 日本精品视频在线观看 | 97视频在线观看免费 | 激情综合五月婷婷 | 欧美性生活免费 | 久草视频看看 | 日韩va欧美va亚洲va久久 | 亚洲三级av| 国产精品久久久久久欧美 | 99热最新地址 | 亚洲综合爱 | 最新中文字幕 | 免费网址在线播放 | 亚洲天天干 | 日韩1页| 9ⅰ精品久久久久久久久中文字幕 | 成人av片免费看 | 久草爱 | 久久精品网 | 国产精品18久久久久久久久久久久 | 国产精品白浆 | 亚洲欧美日韩精品久久奇米一区 | 在线观看av黄色 | 国产精品久久久久久久久大全 | 97人人澡人人添人人爽超碰 | 久久久激情网 | 夜夜骑天天操 | 久久精品三| 99综合久久 | 久久午夜精品影院一区 | 国产二区视频在线观看 | 国产成人一区三区 | 午夜精品一区二区三区视频免费看 | 干干日日 | 欧美激情视频在线免费观看 | 精品美女国产在线 | 免费在线观看的av网站 | 国产福利精品在线观看 | 国产乱老熟视频网88av | www.操.com| 麻豆高清免费国产一区 | 91精品国产电影 | 天天插天天 | 丁香国产视频 | 91人人干 | 日韩在线观看免费 | 成人午夜久久 | 久久综合五月天婷婷伊人 | 中文字幕黄色网址 | 97在线免费观看 | 97福利在线观看 | 国产精品1000 | 免费视频黄色 | 亚洲精品国产精品国自 | 九九精品视频在线观看 | 亚洲精品国产欧美在线观看 | 五月天婷亚洲天综合网鲁鲁鲁 | 99久久久国产精品免费观看 | 国内精品久久久久久久久久久久 | 亚洲日本黄色 | 91亚洲精品久久久蜜桃网站 | 亚洲精品国产成人av在线 | 美女视频一区 | 欧美性色19p | 人人舔人人 | 久久大片网站 | 在线观看视频91 | 欧美日韩中文在线观看 | 久草在线综合网 | 日韩欧美在线高清 | 久久精品99国产精品日本 | 免费在线国产 | 国产成人亚洲在线观看 | 国产无套视频 | 国产在线不卡精品 | 精品国产乱码久久久久久1区2匹 | 久久久免费网站 | 国产福利资源 | 国产一线天在线观看 | 超碰在线色 | 国产精品热视频 | 日日夜夜精品视频天天综合网 | 99久久精品国产欧美主题曲 | 久久久精品国产一区二区三区 | 久久av免费 | 97在线视频免费播放 | 91精品一区国产高清在线gif | 成人亚洲免费 | 综合久久久 | 欧美日韩不卡一区 | 日韩av在线小说 | 国产欧美综合视频 | 最近久乱中文字幕 | 国产午夜剧场 | 91av视频在线播放 | 夜夜躁天天躁很躁波 | 一本一道波多野毛片中文在线 | 国产高清免费在线观看 | 成年人在线观看网站 | 国产一卡二卡在线 | www178ccom视频在线 | 国产精品女同一区二区三区久久夜 | 天天爽天天爽天天爽 | 色先锋av资源中文字幕 | 日韩中文字幕视频在线观看 | 韩国三级一区 | 中文字幕资源在线观看 | 四虎永久网站 | 色多多视频在线 | 一二三四精品 | 91成人网在线观看 | 国产午夜精品一区二区三区欧美 | 久久久九九 | 成人a级免费视频 | 色噜噜日韩精品欧美一区二区 | 最近中文字幕完整视频高清1 | 91视频 - v11av | 国产精品日韩久久久久 | 91av精品| 91成熟丰满女人少妇 | 午夜国产一区 | 日本婷婷色| 免费看v片 | 精品视频免费播放 | 国产精品成人久久久 | 丝袜足交在线 | 欧美日韩在线视频免费 | 激情文学丁香 | 久久综合五月天 | 69绿帽绿奴3pvideos | 欧美做受高潮电影o | 中文字幕第 | 日韩成人中文字幕 | 六月激情 | 欧美精品国产综合久久 | 日韩精品一区电影 | 国产精品一区二区电影 | 在线视频18在线视频4k | 久久爱导航 | 色综合久久久久网 | 91精品导航 | 香蕉视频在线观看免费 | 91精品国产99久久久久久红楼 | 亚洲精品国久久99热 | www.色午夜,com | 国产精品免费视频一区二区 | 色偷偷88888欧美精品久久 | 免费视频久久久久久久 | 中文字幕在线观看免费观看 | 亚洲精品影视在线观看 | 成人一级电影在线观看 | 麻豆免费视频观看 | 中文字幕在线日 | 亚洲成人午夜av | 国产精品久久久免费 | 天天插日日操 | 久草在线观 | 国产中文字幕大全 | 成人在线视频你懂的 | 字幕网资源站中文字幕 | 亚洲理论电影 | 在线观看视频免费播放 | 久久久www成人免费精品张筱雨 | 亚洲在线 | 500部大龄熟乱视频使用方法 | 欧美一区二区精品在线 | 日韩欧美电影在线 | 欧美精品999 | 日本精品久久久久中文字幕5 | 综合五月 | 超碰九九| 成人av中文字幕在线观看 | 天天干,天天射,天天操,天天摸 | 久久激情五月激情 | 在线黄av| 国产精品都在这里 | 色婷婷免费视频 | 精品亚洲欧美一区 | 国产日韩中文字幕 | 日韩在线视频不卡 | 国产精品久久久久久久av电影 | 四虎影视精品 | 成人免费观看网站 | 九九导航 | 日本视频久久久 | 狠狠色丁香婷婷综合橹88 | 日本爱爱免费视频 | 一区二区三区韩国免费中文网站 | 69国产成人综合久久精品欧美 | 国产99久久九九精品免费 | 人人插超碰 | 中文字幕在线播放日韩 | 国产精品久久99综合免费观看尤物 | 国产精品手机在线观看 | 国产精品第10页 | 91最新中文字幕 | 免费网站看av片 | 黄色一区二区在线观看 | 日韩有码在线观看视频 | 国产一区二区网址 | 国产高清在线永久 | 深爱激情av| 91九色视频网站 | 一本一本久久a久久精品综合 | 一二三区av | 国产精品a久久久久 | 日日干美女 | 精品久久精品久久 | 久久久国产精品人人片99精片欧美一 | av短片在线观看 | 日韩黄色在线 | 免费看成年人 | 国产精品系列在线 | 岛国大片免费视频 | www.av在线播放 | 国产精品午夜久久久久久99热 | 欧美性生活大片 | 国内精品久久久久影院男同志 | 亚洲一区二区精品3399 | 天天操天天谢 | 亚洲成av人片在线观看www | 国模视频一区二区三区 | 四虎影视成人永久免费观看视频 | 夜色资源网| 97色在线视频 | 欧洲av在线 | 麻豆视频国产在线观看 | www..com毛片 | 99久久久国产精品免费观看 | 欧美一级片在线 | 婷婷亚洲五月色综合 | 色成人亚洲网 | 天天综合网~永久入口 | 91精品国产高清自在线观看 | 久久精彩 | 精品一区二区影视 | 日韩欧美成 | 成年人在线电影 | 欧美日韩国产页 | 免费h漫在线观看 | 亚洲欧美日韩一级 | 精品一区二区免费在线观看 | 狠狠色丁香久久婷婷综合_中 | 欧美日韩国产一区二 | 精品黄色片 | 日韩com | 超碰在线免费97 | 亚洲人人网 | 婷婷亚洲最大 | 国产精品一区二区av麻豆 | 在线激情网| 亚洲欧洲在线视频 | 亚洲一区二区三区91 | 一区二区三区在线观看免费视频 | 91九色视频 | 成人黄色大片在线免费观看 | 在线精品一区二区 | 国产在线一线 | 超碰在线97国产 | 五月婷婷色 | 久久视精品 | 99免费在线视频观看 | 亚洲最新av网址 | 四虎在线观看视频 | 日韩av一区二区在线 | 精品日韩中文字幕 | 玖玖玖在线 | 超碰97在线资源站 | 日韩精品视频在线观看网址 | 亚洲九九九在线观看 | 免费观看国产精品视频 | 黄色官网在线观看 | 日韩av免费观看网站 | 欧美最猛性xxxxx(亚洲精品) | 91九色在线 | www免费在线观看 | 一区二区三区在线电影 | 国产亚洲一级高清 | 国产女做a爱免费视频 | 女人魂免费观看 | .精品久久久麻豆国产精品 亚洲va欧美 | 欧美一级特黄高清视频 | 精品久久久久久一区二区里番 | 精品999久久久 | 天天干天天操天天搞 | 午夜精品三区 | 99久久精品久久久久久清纯 | 久久精品成人欧美大片古装 | 黄色大片免费播放 | 亚洲永久av | 国产免费a | 日本在线中文在线 | 五月综合激情 | 91精品免费 | 99麻豆久久久国产精品免费 | 中文av免费 | 人人插人人干 | 成人精品福利 | 亚洲午夜电影网 | 久草视频免费 | 玖玖玖在线观看 | 久久久久久不卡 | 国产对白av | 九九久久精品视频 | 日韩精品视频第一页 | 成人资源在线播放 | 国产黄色视| 午夜精品电影一区二区在线 | 亚洲精品乱码久久久久久蜜桃91 | 91.麻豆视频 | 日韩欧美在线观看 | 国产精品系列在线观看 | 在线观看亚洲电影 | 欧美日韩国产一区二区三区 | 精品伊人久久久 | 性色大片在线观看 | 色网站国产精品 | 九九久久视频 | 国产小视频你懂的在线 | 特级西西www44高清大胆图片 | 日韩国产高清在线 | 日韩v在线| 91色综合| 亚洲日韩中文字幕在线播放 | 五月激情久久 | 国产手机在线观看 | 日韩三区在线观看 | 成年人在线免费看视频 | 久久在线免费 | 日韩av一区二区在线播放 | 国产综合精品一区二区三区 | 91你懂的 | 草久久久久 | 日韩在线精品 | 99久久婷婷国产 | 色久五月| 激情五月色播五月 | 一区二区三区视频网站 | 婷婷日韩 | 99色| 免费看网站在线 | 日韩电影在线观看一区二区 | 亚洲天堂激情 | 久久久免费少妇 | 婷婷综合| 在线国产高清 | 视频一区久久 | 欧美成人h版 | 视频国产在线 | 亚洲精品综合在线 | 中文乱幕日产无线码1区 | 久久久精品一区二区三区 | 九九热精品国产 | 一区二区三区韩国免费中文网站 | 超碰免费久久 | 91免费国产在线观看 | 天天射天天舔天天干 | 在线 你懂| 中文字幕国产 | 成年人网站免费在线观看 | 中文字幕免费久久 | 国产91精品一区二区绿帽 | 国产一区二区在线视频观看 | 99日韩精品 | 国产91粉嫩白浆在线观看 | 国内久久精品视频 | 欧美日韩精品电影 | 97国产精品亚洲精品 | 日韩免费高清 | 日韩欧美国产精品 | 日韩在线免费视频 | 欧美日韩伦理一区 | aa级黄色大片 | 日批视频在线 | 在线 国产 亚洲 欧美 | 91麻豆产精品久久久久久 | 欧美日韩三级在线观看 | 久久综合久久久久88 | 国产精品大片免费观看 | 99精品视频在线播放免费 | 91精品免费在线 | 日韩成人黄色 | 国产玖玖在线 | 国产精品免费在线 | 久久久久久久久久久高潮一区二区 | 国产一区二区三区高清播放 | 久久99精品国产一区二区三区 | 亚洲精品国产综合99久久夜夜嗨 | 国产九九九视频 | 久久久久久久久爱 | 91精品啪 | 黄色三几片 | 久久九九影视网 | 91麻豆精品国产91 | 久草视频视频在线播放 | 中文字幕超清在线免费 | 天天做天天看 | 91完整视频 | 超碰激情在线 | 中文在线天堂资源 | 日韩高清不卡一区二区三区 | 日韩免费在线视频观看 | 天天色天天爱天天射综合 | 国产97免费 | 亚洲精品网站 | 色婷婷激情综合 | 69热国产视频 | 福利视频入口 | 成人a在线观看 | 精品一区二区免费视频 | 久久日本视频 | 久草资源免费 | 天堂av网址 | 国产精品一区二区免费 | 色天天综合久久久久综合片 | www.伊人色.com | 欧美久久电影 | 久久久久久久久电影 | 中文亚洲欧美日韩 | 一级淫片a| 色婷婷亚洲精品 | 手机在线看片日韩 | 国产精品麻豆一区二区三区 | 伊人狠狠| 九九视频免费在线观看 | 丁香高清视频在线看看 | 国产黄免费在线观看 | 特级毛片在线 | 婷婷六月天天 | 久久在线看 | 色91在线 | 精品国产理论 | 国产a高清| 亚洲码国产日韩欧美高潮在线播放 | 免费人人干 | 夜夜夜夜操 | 伊人色综合网 | 欧美不卡在线 | 美女一二三区 | 91黄色成人| 免费精品在线观看 | 久久久久国产一区二区三区四区 | 午夜精品久久久久久久久久 | bayu135国产精品视频 | 亚洲精品中文字幕视频 | 夜夜操天天摸 | 国产精品99精品久久免费 | 国产自产在线视频 | 成人午夜影院在线观看 | 五月花激情 | av在线播放国产 | 久久福利综合 | 国产精品麻豆果冻传媒在线播放 | 91成人在线看 | 成人影音在线 | 97视频人人| 国产午夜精品一区二区三区欧美 | 国产成人精品av在线 | 色综合久久88 | 免费在线观看成年人视频 | 日韩和的一区二在线 | 久久99久久99精品免观看粉嫩 | 免费在线视频一区二区 | 久99精品 | 免费十分钟 | 天天视频色版 | av网址在线播放 | 国产理论在线 | 天天射综合| 国产成人精品一区二 | 国产盗摄精品一区二区 | 最新不卡av| 91亚瑟视频 | 国产九九九视频 | 丁香久久激情 | 久久国内视频 | 美女国内精品自产拍在线播放 | 日韩在线免费小视频 | 成人av免费看 | 国模一区二区三区四区 | 国产免费久久久久 | 综合网伊人 | 久久色亚洲 | 日韩欧美91 | 久久久免费av | 国产不卡网站 | 91av小视频 | 二区三区中文字幕 | 精品国产伦一区二区三区观看说明 | 99精品视频免费全部在线 | 欧美精品在线一区 | 国产精品一区二区久久 | 国产黄色片免费观看 | 四虎在线视频 | 久久久久99精品成人片三人毛片 | av电影免费在线播放 | 黄色大全免费观看 | 人人插人人澡 | 天堂网中文在线 | 成人国产精品 | 国产九九九视频 | 深夜视频久久 | 色综合中文综合网 | 天天干天天玩天天操 | 丝袜美腿在线视频 | 日日干av | 亚洲一区二区三区毛片 | 国产高清在线一区 | 亚洲午夜久久久久 | 99色国产 | 激情在线五月天 | 中文字幕在线播出 | 色婷婷久久久综合中文字幕 | 免费男女羞羞的视频网站中文字幕 | 亚洲视频免费视频 | 国产日韩视频在线 | 在线观看视频免费播放 | 国产原创在线视频 | 超碰精品在线观看 | 亚洲国产美女精品久久久久∴ | 国产亚洲精品bv在线观看 | 国产手机视频精品 | 2021国产在线 | 日韩欧美视频免费在线观看 | 色偷偷888欧美精品久久久 | 久久国产色 | a在线一区 | 在线国产激情视频 | 日本精品午夜 | 中文字幕在线看视频国产 | 日本丰满少妇免费一区 | 一区二区三区四区在线 | 国产在线黄| 精品国产精品国产偷麻豆 | 久久不见久久见免费影院 | 久久私人影院 | 欧美在线观看视频一区二区 | 97品白浆高清久久久久久 | 久久黄视频 | 一区二区电影网 | 国产一区二区在线影院 | 综合伊人av | 玖玖在线视频观看 | 亚洲精品综合一二三区在线观看 | 在线观看中文字幕亚洲 | 成人黄色片在线播放 | 亚洲综合视频在线 | 一区在线观看 | 69国产精品视频免费观看 | 久色小说| 日本久热 | 久久艹综合 | 免费观看视频的网站 | 国产香蕉97碰碰碰视频在线观看 | 国产在线视频一区二区三区 | 91精品网站在线观看 | 黄污污网站 | 九九精品在线观看 | 午夜av片 | 色欧美视频| 国产一区视频导航 | 91精品一区二区三区久久久久久 | 奇米网网址 | 99精品在线| 右手影院亚洲欧美 | 久久久久国产精品免费 | 精品美女久久久久久免费 | 99精品亚洲 | 欧美一区二区精品在线 | 成人精品一区二区三区中文字幕 | 国产视频精品久久 | 久久精品久久99精品久久 | 精品人人人人 | 伊人热 | 久久精品香蕉 | 国产精品 亚洲精品 | 国产视频欧美视频 | 麻豆久久精品 | 青青视频一区 | 91视频链接| 精品免费视频123区 午夜久久成人 | 国产精品欧美日韩 | 精品亚洲午夜久久久久91 | 日韩精品视频免费看 | 国产亚洲日 | 久久久久久久综合色一本 | 国产夫妻av在线 | 黄色午夜网站 | 欧美动漫一区二区三区 | 韩日av一区二区 | 99热精品久久 | 国产精品久久久久久久久岛 | 91福利视频一区 | 国产97在线观看 | 97成人在线观看 | 91九色在线视频 | 国产视频一区在线播放 | 一区二区三区免费在线观看视频 | 久久精品国产v日韩v亚洲 | 免费成人av | 九九在线高清精品视频 | 欧美午夜寂寞影院 |