STL之五 set multiset用法詳解

2021-07-30 15:20:45 字數 4543 閱讀 2629

使用set或multiset之前,必須加入標頭檔案

set、multiset都是集合類,差別在與set中不允許有重複元素,multiset中允許有重複元素。

sets和multiset內部以平衡二叉樹實現

set c:建立空集合,不包含任何元素

set c(op):以op為排序準則,產生乙個空的set

set c1(c2):複製c2中的元素到c1中

set c(const value_type *first, const value_type* last):複製[first, last)之間元素構成新集合

set c(const value_type *first, const value_type* last,op):以op為排序準則,

複製[first, last)之間元素構成新集合。

c.~set()銷毀所有元素,釋放記憶體

multiset mc:建立空集合,不包含任何元素

multiset mc(op):以op為排序準則,產生乙個空的set

multiset c1(c2):複製c2中的元素到c1中

multiset c(const value_type *first, const value_type* last):複製[first, last)之間元素構成新集合

multiset c(const value_type *first, const value_type* last,op):以op為排序準則,

複製[first, last)之間元素構成新集合。

c.~set()銷毀所有元素,釋放記憶體

[cpp]view plain

copy

// constructing sets

#include 

#include 

bool

fncomp (

intlhs, 

intrhs) ;  

intmain ()  

;  std::set

> second (myints,myints+5);        

// range

std::set

> third (second);                  

// a copy of second

std::set

> fourth (second.begin(), second.end());  

// iterator ctor.

std::set

,classcomp> fifth;                 

// class as compare

bool

(*fn_pt)(

int,

int) = fncomp;  

std::set

,bool

(*)(

int,

int)> sixth (fn_pt);  

// function pointer as compare

return

0;  

}  

int size() const:返回容器元素個數

bool empty() const:判斷容器是否為空,若返回true,表明容器已空

pairinsert( x):插入元素x

iterator insert(iterator it,x):在迭代器it處插入元素x

void insert(const value_type *first,const value_type *last):插入[first, last)之間元素

iterator erase(iterator it):刪除迭代器指標it處元素

iterator erase(iterator first,iterator last):刪除[first, last)之間元素

size_type erase(const key& key):刪除元素值等於key的元素

[cpp]view plain

copy

#include 

#include 

intmain ()  

;              

// 10 already in set, not inserted

myset.insert (myints,myints+3);  

std::cout <

;  for

(it=myset.begin(); it!=myset.end(); ++it)  

std::cout <

<

std::cout <

;  return

0;  

}  

[cpp]view plain

copy

#include 

#include 

intmain ()    

iterator begin():返回首元素的迭代器指標

iterator end():返回尾元素的迭代器指標

reverse_iterator rbegin():返回尾元素的逆向迭代器指標

reverse_iterator rend():返回首元素前乙個位置的迭代器指標

[cpp]view plain

copy

#include 

#include 

intmain ()  

;  std::set

> myset (myints,myints+5);  

std::cout <

;  for

(std::set<

int>::iterator it=myset.begin(); it!=myset.end(); ++it)  

std::cout <

<

std::cout <

;  return

0;  

}  

const_iterator lower_bound(const key& key):返回容器中大於等於key的迭代器指標

const_iterator upper_bound(const key& key):返回容器中大於key的迭代器指標

int count(const key& key) const:返回容器中元素等於key的元素的個數

pairequal_range(const key& key) const:返回容器中元素值等於key的迭代指標[first, last)

const_iterator find(const key& key) const:查詢功能,返回元素值等於key的迭代器指標

void swap(set& s):交換集合元素

void swap(multiset& s):交換多集合元素  

[cpp]view plain

copy

#include 

#include 

intmain ()    

[cpp]view plain

copy

#include "stdafx.h"

#include 

#include 

using

namespace

std;  

intmain ()    

[cpp]view plain

copy

#include "stdafx.h"

#include 

#include 

using

namespace

std;  

intmain ()  

;  set

> first (myints,myints+3);     

// 10,12,75

set> second (myints+3,myints+6);  

// 20,25,32

first.swap(second);  

cout <

;  for

(set<

int>::iterator it=first.begin(); it!=first.end(); ++it)  

cout <

<

cout <

;  cout <

;  for

(set<

int>::iterator it=second.begin(); it!=second.end(); ++it)  

cout <

<

cout <

;  return

0;  

}  

STL之五 set multiset用法詳解

使用set或multiset之前,必須加入標頭檔案 set multiset都是集合類,差別在與set中不允許有重複元素,multiset中允許有重複元素。sets和multiset內部以平衡二叉樹實現 set c 建立空集合,不包含任何元素 set c op 以op為排序準則,產生乙個空的set ...

STL之五 set multiset用法詳解

使用set或multiset之前,必須加入標頭檔案 set multiset都是集合類,差別在與set中不允許有重複元素,multiset中允許有重複元素。sets和multiset內部以平衡二叉樹實現 set c 建立空集合,不包含任何元素 set c op 以op為排序準則,產生乙個空的set ...

STL之五 set multiset用法詳解

使用set或multiset之前,必須加入標頭檔案 set multiset都是集合類,差別在與set中不允許有重複元素,multiset中允許有重複元素。sets和multiset內部以平衡二叉樹實現 set c 建立空集合,不包含任何元素 set c op 以op為排序準則,產生乙個空的set ...