set容器都會自行根據鍵的大小對儲存的鍵值對進行排序, 只不過 set 容器中各鍵值對的鍵 key 和值 value 是相等的,根據 key 排序,也就等價為根據 value 排序。
另外,使用 set 容器儲存的各個元素的值必須各不相同。更重要的是,從語法上講 set 容器並沒有強制對儲存元素的型別做 const 修飾,即 set 容器中儲存的元素的值是可以修改的。但是,c++ 標準為了防止使用者修改容器中元素的值,對所有可能會實現此操作的行為做了限制,使得在正常情況下,使用者是無法做到修改 set 容器中元素的值的。
對於初學者來說,切勿嘗試直接修改 set 容器中已儲存元素的值,這很有可能破壞 set 容器中元素的有序性,最正確的修改 set 容器中元素值的做法是:先刪除該元素,然後再新增乙個修改後的元素。值得一提的是,set 容器定義於標頭檔案,並位於 std 命名空間中。因此如果想在程式中使用 set 容器,該程式**應先包含如下語句:
#include using namespace std;
注意,第二行**不是必需的,如果不用,則後續程式中在使用 set 容器時,需手動註明 std 命名空間(強烈建議初學者使用)。
set 容器的類模板定義如下:
template < class t,
C STL中的關聯式容器
stl中的容器,比如 vector list deque forward list c 11 等,這些容器統稱為序列式容器,因為其底層為線性序列的資料結構,裡面儲存的是元素本身。關聯式容器也是用來儲存資料的,與序列式容器不同的是,其裡面儲存的是結構的鍵值對,在資料檢索時比序列式容器效率更高。樹形結構...
關聯式容器 set和multiset
set的特性是,所有的元素都會根據元素的鍵值自動排序。set的元素不像map那樣可以同時擁有實值 value 和鍵值 key set元素的鍵值就是實值,實值就是鍵值。set不允許兩個元素擁有相同的鍵值。不能通過set的迭代器改變set的元素值,因為set元素的值就是其鍵值,關係到set元素的排列規則...
C 關聯式容器(set)詳解
關聯容器與序列容器有著根本性的不同,序列容器的元素是按照在容器中的位置來順序儲存和訪問的,而關聯容器的元素是按關鍵元素來儲存和訪問的。關聯容器支援高效的關鍵字查詢與訪問。兩個主要的關聯容器型別是map與set。概念 set裡面每個元素只存有乙個key,它支援高效的關鍵字查詢操作。set對應數學中的 ...