順序容器包括vector、deque、list、forward_list、array、string,所有順序容器都提供了快速順序訪問元素的能力。
關聯容器包括set、map
關聯容器和順序容器有著根本的不同:關聯容器中的元素是按關鍵字來儲存和訪問的。與之相對,順序容器中的元素是按它們在容器中的位置來順序儲存和訪問的。
關聯容器不支援順序容器的位置相關的操作。原因是關聯容器中元素是根據關鍵字儲存的,這些操作對關聯容器沒有意義。而且,關聯容器也不支援建構函式或插入操作這些接受乙個元素值和乙個數量值得操作。
關聯容器支援高效的關鍵字查詢和訪問。兩個主要的關聯容器(associative container)型別是map和set。map中的元素是一些關鍵字----值(key--value)對:關鍵字起到索引的作用,值則表示與索引相關聯的資料。set中每個元素只包含乙個關鍵字:set支援高效的關鍵字查詢操作----檢查乙個給定關鍵字是否在set中。
標準庫提供set關聯容器分為:
1,按關鍵字有序儲存元素:set(關鍵字即值,即只儲存關鍵字的容器);multiset(關鍵字可重複出現的set);
2,無序集合:unordered_set(用雜湊函式組織的set);unordered_multiset(雜湊組織的set,關鍵字可以重複出現)。
set就是關鍵字的簡單集合。當只是想知道乙個值是否存在時,set是最有用的。
在set中每個元素的值都唯一,而且系統能根據元素的值自動進行排序。set中元素的值不能直接被改變。set內部採用的是一種非常高效的平衡檢索二叉樹:紅黑樹,也稱為rb樹(red-black tree)。rb樹的統計效能要好於一般平衡二叉樹。
set具備的兩個特點:
set用法:
begin(); // 返回指向第乙個元素的迭代器
end(); // 返回指向迭代器的最末尾處(即最後乙個元素的下乙個位置)
clear(); // 清除所有元素
count(); // 返回某個值元素的個數
empty(); // 如果集合為空,返回true
equal_range(); //返回集合中與給定值相等的上下限的兩個迭代器
erase()–刪除集合中的元素
find()–返回乙個指向被查詢到元素的迭代器
get_allocator()–返回集合的分配器
insert()–在集合中插入元素
lower_bound()–返回指向大於(或等於)某值的第乙個元素的迭代器
key_comp()–返回乙個用於元素間值比較的函式
max_size()–返回集合能容納的元素的最大限值
rbegin()–返回指向集合中最後乙個元素的反向迭代器
rend()–返回指向集合中第乙個元素的反向迭代器
size()–集合中元素的數目
swap()–交換兩個集合變數
upper_bound()–返回大於某個值元素的迭代器
value_comp()–返回乙個用於比較元素間的值的函式
begin() and end()
// set::begin/end
#include #include int main ()
; std::setmyset (myints, myints+5);
std::cout << "myset contains:";
for (std::set::iterator it=myset.begin(); it!=myset.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}output:
myset contains: 13 23 42 65 75
C set用法總結(整理)
順序容器包括vector deque list forward list array string,所有順序容器都提供了快速順序訪問元素的能力。關聯容器包括set map 關聯容器和順序容器有著根本的不同 關聯容器中的元素是按關鍵字來儲存和訪問的。與之相對,順序容器中的元素是按它們在容器中的位置來順...
C set用法總結(整理)
set簡介 順序容器包括vector deque list forward list array string,所有順序容器都提供了快速順序訪問元素的能力。關聯容器包括set map 關聯容器和順序容器有著根本的不同 關聯容器中的元素是按關鍵字來儲存和訪問的。與之相對,順序容器中的元素是按它們在容器...
C set用法總結
c 中set的用法 set的特性是,所有元素都會根據元素的鍵值自動排序,set的元素不像map那樣可以同時擁有實值 value 和鍵值 key set元素的鍵值就是實值,實值就是鍵值。set不允許兩個元素有相同的鍵值。簡單來說,set集合是c stl庫中自帶的乙個容器,set具有以下兩個特點 1 s...