zoukankan      html  css  js  c++  java
  • 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。全局函数,非成员函数。

  • 相关阅读:
    Account group in ERP and its mapping relationship with CRM partner group
    错误消息Number not in interval XXX when downloading
    错误消息Form of address 0001 not designated for organization
    Algorithm类介绍(core)
    梯度下降与随机梯度下降
    反思
    绘图: matplotlib核心剖析
    ORB
    SIFT
    Harris角点
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/4440320.html
Copyright © 2011-2022 走看看