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。全局函数,非成员函数。

  • 相关阅读:
    JSP九大内置对象的作用和用法总结(转)
    Java web的几种异常处理 (转)
    response.getWriter().write()与out.print()的区别(转)
    【JavaWeb】Session(转)
    java web中cookies的用法 转
    1123
    1120
    jsp 内置对象
    include与jsp:include区别
    11.24作业1
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/4440320.html
Copyright © 2011-2022 走看看