set用法总结

set集合用于存放不重复的元素

template <class Key, class Compare = less<Key>, class Alloc = alloc> class set { ...... private: typedef rb_tree<key_type identity="" ,=""><value_type value_type,="">, key_compare, Alloc> rep_type; rep_type t; //set内部的实现实际上是一个红黑树 ...... };

Constructors

set

Constructs a set that is empty or that is a copy of all or part of some other set.

set默认的比较器是不允许 有相同元素的,不过你可以重新定义一个比较器

Typedefs

allocator_type

A type that represents the allocator class for the set object.

const_iterator

A type that provides a bidirectional iterator that can read a const element in the set.

const_pointer

A type that provides a pointer to a const element in a set.

const_reference

A type that provides a reference to a const element stored in a set for reading and performing const operations.

const_reverse_iterator

A type that provides a bidirectional iterator that can read any const element in the set.

difference_type

A signed integer type that can be used to represent the number of elements of a set in a range between elements pointed to by iterators.

iterator

A type that provides a bidirectional iterator that can read or modify any element in a set.

key_compare

A type that provides a function object that can compare two sort keys to determine the relative order of two elements in the set.

key_type

The type describes an object stored as an element of a set in its capacity as sort key.

pointer

A type that provides a pointer to an element in a set.

reference

A type that provides a reference to an element stored in a set.

reverse_iterator

A type that provides a bidirectional iterator that can read or modify an element in a reversed set.

size_type

An unsigned integer type that can represent the number of elements in a set.

value_compare

The type that provides a function object that can compare two elements to determine their relative order in the set.

value_type

The type describes an object stored as an element of a set in its capacity as a value.

Member Functions

begin

Returns an iterator that addresses the first element in the set.

clear

Erases all the elements of a set.

如果当前容器中的元素是自己new出来的对象指针,那么在调用clear或erase函数之前,需要自己先释放掉这部分内存。

否则会有内存泄露。

count

Returns the number of elements in a set whose key matches a parameter-specified key.

set<int> s1; set<int>::size_type i;

s1.insert(1); s1.insert(1); // Keys must be unique in set, so duplicates are ignored i = s1.count(1);

cout << "The number of elements in s1 with a sort key of 1 is: " << i << "." << endl;

i = s1.count(2);

cout << "The number of elements in s1 with a sort key of 2 is: " << i << "." << endl;

结果分别为1和0.

对于set而言,只存在1(表示关键字在set中)或0(关键字不在set中)两种情况。

empty

Tests if a set is empty.

end

Returns an iterator that addresses the location succeeding the last element in a set.

equal_range

Returns a pair of iterators respectively to the first element in a set with a key that is greater than a specified key and to the first element in the set with a key that is equal to or greater than the key.

pair<iterator,iterator> equal_range(const key_type & x) const
返回容器中关键字等于x(满足==x关系)的元素区间。返回值[pair.first, pair.second]均满足该关系。

如果只是判断元素是否存在,可以使用count函数检查返回值;

erase

Removes an element or a range of elements in a set from specified positions or removes elements that match a specified key.

如果当前容器中的元素是自己new出来的对象指针,那么在调用clear或erase函数之前,需要自己先释放掉这部分内存。

否则会有内存泄露。

find

Returns an iterator addressing the location of an element in a set that has a key equivalent to a specified key.

get_allocator

Returns a copy of the allocator object used to construct the set.

insert

Inserts an element or a range of elements into a set.

pair<iterator, bool> insert(const value_type& x)
将一个元素插入当前set容器。返回值pair的第一个元素,表示插入位置的迭代器;第二个元素,表示是否插入到容器中,只有该值为true,迭代器才有效。

检查是否插入成功可以如下:

std::pair<std::set<int>::iterator,bool> insert_pair;
insert_pair = set_nums.insert(RandomOneNum(min,max,bNegative));
if (insert_pair.second == true)
{
pNums[nIndex++] = *insert_pair.first;
}

key_comp

Retrieves a copy of the comparison object used to order keys in a set.

lower_bound

Returns an iterator to the first element in a set with a key that is equal to or greater than a specified key.

max_size

Returns the maximum length of the set.

rbegin

Returns an iterator addressing the first element in a reversed set.

rend

Returns an iterator that addresses the location succeeding the last element in a reversed set.

size

Returns the number of elements in the set.

swap

Exchanges the elements of two sets.

upper_bound

Returns an iterator to the first element in a set with a key that is greater than a specified key.

value_comp

Retrieves a copy of the comparison object used to order element values in a set.

operator!= (set)

Tests if the set or multiset object on the left side of the operator is not equal to the set or multiset object on the right side.

operator< (set)

Tests if the set or multiset object on the left side of the operator is less than the set or multiset object on the right side.

operator<= (set)

Tests if the set or multiset object on the left side of the operator is less than or equal to the set or multiset object on the right side.

operator== (set)

Tests if the set or multiset object on the left side of the operator is equal to the set or multiset object on the right side.

operator> (set)

Tests if the set or multiset object on the left side of the operator is greater than the set or multiset object on the right side.

operator>= (set)

Tests if the set or multiset object on the left side of the operator is greater than or equal to the set or multiset object on the right side.

set也重载了[]运算符,可以像数组一样使用

注意的是set中数元素的值不能直接被改变

template <class Key, class Compare, class Alloc>
inline bool operator == (const set<Key, Compare, Alloc> & x, const set<Key, Compare, Alloc> & y)
判断两个set容器是否相等。全局函数,非成员函数。

template <class Key, class Compare, class Alloc>
inline bool operator < (const set<Key, Compare, Alloc> & x, const set<Key, Compare, Alloc< & y)
判断容器x是否小于y。全局函数,非成员函数。

原文地址:https://www.cnblogs.com/Mr-Zhong/p/4440320.html