C++ STL MultiSet类成员函数介绍及具体用法示例
c++ stl multiset类成员函数介绍及具体用法示例
1、C++ STL MultiSet 简介
C++ STL MultiSet跟set具有相同功能,但允许重复的元素。multiset容器的内部结构通常由平衡二叉树(balanced binary tree)来实现。当元素放入容
器中时,会按照一定的排序法则自动排序,默认是按照less<>排序规则来排序。这种自动排序的特性加速了元 素查找的过程,但是也带来了一个问题:不可以
直接修改set或multiset容器中的元素值,因为这样做就可能违反了元素自动排序的规则。如果你希望修 改一个元素的值,必须先删除原有的元素,再插入新
的元素。
C++ STL MultiSet类成员函数列表如下:
begin()
clear()
清除所有元素
count()
返回指向某个值元素的个数
empty()
如果集合为空,返回true
end()
返回指向最后一个元素的迭代器
返回集合中与给定值相等的上下限的两个迭代器
erase()
删除集合中的元素
find()
返回一个指向被查找到元素的迭代器
返回多元集合的分配器
insert()
在集合中插入元素
key_comp()
返回一个用于元素间值比较的函数
lower_bound()
返回指向大于(或等于)某值的第一个元素的迭代器
返回集合能容纳的元素的最大限值
rbegin()
返回指向多元集合中最后一个元素的反向迭代器
rend()
返回指向多元集合中第一个元素的反向迭代器
size()
多元集合中元素的数目
swap()
upper_bound()
返回一个大于某个值元素的迭代器
value_comp()
返回一个用于比较元素间的值的函数
2、C++ STL MultiSet 成员函数
2.1 C++ STL MultiSet 构造函数
multiset( ); explicit multiset ( const Compare& _Comp ); multiset ( const Compare& _Comp, const Allocator& _Al ); set( const multiset<Key, Compare, Allocator> & _Right ); template<class InputIterator> multiset ( InputIterator _First, InputIterator _Last ); template<class InputIterator> multiset ( InputIterator _First, InputIterator _Last, const Compare& _Comp ); template<class InputIterator> multiset ( InputIterator _First, InputIterator _Last, const Compare& _Comp, const Allocator& _Al );
参数:
_Al
The storage allocator class to be used for this set object, which defaults to Allocator.
_Comp
The comparison function of type constTraits used to order the elements in the set, which defaults to Compare.
_Right
The set of which the constructed set is to be a copy.
The position of the first element in the range of elements to be copied.
_Last
The position of the first element beyond the range of elements to be copied.
2.2 C++ STL MultiSet迭代函数
const_iterator begin( ) const;
iterator begin( );
功能:返回指向multiset头部的迭代器.
const_iterator end( ) const;
iterator end( );
功能: 返回指向multiset尾部的迭代器
const_reverse_iterator rbegin( ) const;
reverse_iterator rbegin( );
功能: 返回一个指向multiset尾部的逆向迭代器
const_reverse_iterator rend( ) const;
reverse_iterator rend( );
功能: 返回一个指向multiset首尾部的逆向迭代器
2.3.2 C++ STL MultiSet 删除数据
iterator erase(
iterator _Where
);
iterator erase(
iterator _First,
iterator _Last
);
size_type erase(
const key_type& _Key
);
参数:
_Where
Position of the element to be removed from the set.
_First
Position of the first element removed from the set.
_Last
Position just beyond the last element removed from the set.
_Key
The key of the elements to be removed from the set.
2.3.3 C++ STL MultiSet交换数据
void swap(
set<Key, Traits, Allocator>& _Right
);
参数:
_Right
The argument set providing the elements to be swapped with the target set.
2.3.4 C++ STL MultiSet 清空数据
void clear( );
2.3 C++ STL MultiSet 操作函数
const_iterator lower_bound(
const Key& _Key
) const;
iterator lower_bound(
const Key& _Key
);
功能:
返回容器中第一个值大于或等于_Key的元素的iterator位置。
参数:
const Key& _Key, The argument key to be compared with the sort key of an element from the multiset being searched.
const_iterator upper_bound(
const Key& _Key
) const;
iterator upper_bound(
const Key& _Key
);
功能:
返回容器中第一个值大于_Key的元素的iterator位置。
参数:
const Key& _Key, The argument key to be compared with the sort key of an element from the multiset being searched.
pair <const_iterator, const_iterator>
equal_range (
const Key& _Key
) const;
pair <iterator, iterator>
equal_range (
const Key& _Key
);
功能:
返回容器中值等于val的所有元素的范围[beg, end)组成的pair<beg, end> 。即A pair of iterators such that the first is the lower_bound of
the key and the second is the upper_bound of the key.
参数:
_Key
The argument key to be compared with the sort key of an element from the multiset being searched.
3、C++ STL MultiSet代码范例
#include <iostream> #include <set> using namespace std; void PRINT_ELEMENTS(multiset<int> col1, const char* cstr) { multiset<int>::const_iterator pos; cout << cstr << endl; for (pos = col1.begin(); pos != col1.end(); ++pos) { cout << *pos << " "; } } int main() { multiset<int> col1; col1.insert(2); col1.insert(5); col1.insert(4); col1.insert(6); col1.insert(1); col1.insert(5); PRINT_ELEMENTS(col1, "col1: "); cout << endl; multiset<int>::const_iterator pos; pair<multiset<int>::iterator, multiset<int>::iterator> range; cout << "lower_bound(3): " << *col1.lower_bound(3) << endl; cout << "upper_bound(3): " << *col1.upper_bound(3) << endl; range = col1.equal_range(3); cout << "equal_range(3): " << *range.first << " " << *range.second << endl; cout << "elements with value(3): "; for (pos = range.first; pos != range.second; ++pos) { cout << *pos << " "; } cout << endl; cout << endl; cout << "lower_bound(5): " << *col1.lower_bound(5) << endl; cout << "upper_bound(5): " << *col1.upper_bound(5) << endl; range = col1.equal_range(5); cout << "equal_range(5): " << *range.first << " " << *range.second << endl; cout << "elements with value(5): "; for (pos = range.first; pos != range.second; ++pos) { cout << *pos << " "; } cout << endl; }
输出:
col1:
1 2 4 5 5 6
lower_bound(3): 4
upper_bound(3): 4
equal_range(3): 4 4
elements with value(3):
lower_bound(5): 5
upper_bound(5): 6
equal_range(5): 5 6
elements with value(5): 5 5
C++ STL Bitsets构造函数及成员函数解释及代码示例 是不是只有C++才可以使用STL? c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例 哪儿能下载aix4.3的c++ stl库 c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件 各位,请问怎样在linux下使用gnu c++库和stl库,请具体一点,谢谢(可开更多帖给分)! C++ STL标准模板库类String成员详细列表参考及示例代码 用gcc怎样编译STL的c++程序? C++ stl队列Queue用法介绍:删除,插入等操作代码举例 C++在成员函数中使用STL的find_if函数实例 c++ stl栈容器stack的pop(),push()等用法介绍及头文件 深入解析C++ STL中的常用容器 C++ STL库中priority_queue介绍,成员函数说明及priority_queue具体用法举例 C++ 关于STL中sort()对struct排序的方法 c++ stl multimap基本操作使用技巧详细介绍 c++ STL容器总结之:vertor与list的应用 c++ STL关联式容器Map成员函数介绍及查找(find()),插入(insert()),删除(erase())等操作代码举例 c++非变易算法-stl算法 双向队列Deque 类成员函数列表参考(c++ STL 容器)