您的位置:首页 > 编程语言 > C语言/C++

C++容器类的简单介绍续(转帖)

2010-11-25 10:44 162 查看
5.unique操作
// list::unique
#include <iostream>
#include <cmath>
#include <list>
using namespace std;

// a binary predicate implemented as a function:
bool same_integral_part (double first, double second)
{ return ( int(first)==int(second) ); }

// a binary predicate implemented as a class:<
pre>class is_near
{
public:
bool operator() (double first, double second)
{ return (fabs(first-second)<5.0); }
};

int main ()
{
double mydoubles[]={ 12.15, 2.72, 73.0, 12.77, 3.14,
12.77, 73.35, 72.25, 15.3, 72.25 };
list<double> mylist (mydoubles,mydoubles+10);
//UNIQUE以前必须要Sort,切记,它的内部实现是I,i+1的方式。
mylist.sort(); // 2.72, 3.14, 12.15, 12.77, 12.77,
// 15.3, 72.25, 72.25, 73.0, 73.35

mylist.unique(); // 2.72, 3.14, 12.15,
12.77
// 15.3, 72.25, 73.0, 73.35

mylist.unique (same_integral_part); // 2.72, 3.14, 12.15
// 15.3, 72.25, 73.0

mylist.unique (is_near()); // 2.72, 12.15, 72.25

cout << "mylist contains:";
for (list<double>::iterator it=mylist.begin(); it!=mylist.end(); ++it)
cout << " " << *it;
cout << endl;

return 0;
}
6.排序操作
sort(); //默认按operator <排序,从小到大
sort(pr); //pr为Functional函数
7.Merge操作
在merge操作前,需要对两个序列都用operator <排序,当然,也可以指定pr排序函数
merge(s2)
merge(s2,pr);
8.reverse()
翻转操作,把整个list翻转
deque的基本操作
一、原型与构造函数
typedef deque<T, allocator<T> > deqObj;
构造函数
deque();
deque(al);
deque(n);
deque(n,x);
deque(n,x,al);
deque(first,last);
deque(first,last,
二、操作
1.resize & clear
使用resize(n)改变大小,使用resize(n, val)如果需要用T(val) 来填满空闲值。
2.clear操作
在clear后调用deqObj.swap(deque<T,A>())是好习惯,而且也一定要这么做。
3.font(),back(),operator [],(如出边界,形为未定)at()(如出边界,抛异常),push_back(),push_front(),pop_back(), pop_front(),insert(iterator it,x),insert(iterator it,n,x),insert(iterator first,iterator last),(插入后指向刚插入的值),erase(it),删除在it指定位置的值,erase(iterator first,iterator last)删除指定区间的值(左闭右开)。这些操作与上面的操作雷同。

Set与multiset的基本操作
一、原型与构造函数
typedef set<Key, less<Key>, allocator<key> > setObj;
构造函数
set(); //空set,按pred()排序
set(pr); //声明一个空的按pr排序的set
set(pr,al); //声明一个按pr排序的集合用al分配
set(first,last)
set(first,last,pr)
set(first,last,pr,al)
操作
1.clear()
2.erase(it); erase(first, last)
3.insert(key),返回值为pair<iterator, bool> 类型,没有与插入元素相同的元素时,second为true,此时first指向新插入的元素。否则为False,first仍指向原来的元素
4.find(key)
5.lower_bound(key)
6.upper_bound(key)
7.equal_range(key),返回一个pair<iterator , iterator >(lower_bound(key), upper_bound(key))
8.count, equal_range的长度
9.key_comp,如果k1排在k2的前面,那么key_comp()(key1,key2)就为true
10.value_comp,对于set<key>对象,它与key_comp一样。
multiset
1.insert,由于insert总能成功,那么它返回的就是新元素的迭代器,而并非pair<iteraor, bool>对象.
2.find返回第一个与key相等的迭代器。
3.equal_range将返回 [0,setObj.size())的任意长度.
4.count()将返回[0,setObj.size())的任意值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: