《程序设计实习》 10. 标准模板库(2).pptVIP

  • 0
  • 0
  • 约1.02万字
  • 约 42页
  • 2021-08-03 发布于湖北
  • 举报
程序设计实习;标准模板库STL (二);信息科学技术学院《程序设计实习》 郭炜;关联容器 set, multiset, map, multimap 内部元素有序排列,新元素插入的位置取决于它的值,查找速度快。 除了各容器都有的函数外,还支持以下成员函数: find: 查找等于某个值 的元素(x小于y和y小于x同时不成立即为相等) lower_bound : 查找某个下界 upper_bound : 查找某个上界 equal_range : 同时查找上界和下界 count :计算等于某个值的元素个数(x小于y和y小于x同时不成立即为相等) insert: 用以插入一个元素或一个区间 ;预备知识: pair 模板 templateclass _T1, class _T2 struct pair { typedef _T1 first_type; typedef _T2 second_type; _T1 first; _T2 second; pair(): first(), second() { } pair(const _T1 __a, const _T2 __b) : first(__a), second(__b) { } templateclass _U1, class _U2 pair(const pair_U1, _U2 __p) : first(__p.first), second(__p.second) { } };;multiset templateclass Key, class Pred = lessKey, class A = allocatorKey class multiset { …… }; Pred类型的变量决定了multiset 中的元素,“一个比另一个小”是怎么定义的。multiset运行过程中,比较两个元素x,y的大小的做法,就是生成一个 Pred类型的变量,假定为 op,若表达式op(x,y) 返回值为true,则 x比y小。 Pred的缺省类型是 lessKey。;multiset templateclass Key, class Pred = lessKey, class A = allocatorKey class multiset { …… }; Pred类型的变量决定了multiset 中的元素,“一个比另一个小”是怎么定义的。multiset运行过程中,比较两个元素x,y的大小的做法,就是生成一个 Pred类型的变量,假定为 op,若表达式op(x,y) 返回值为true,则 x比y小。 Pred的缺省类型是 lessKey。 less 模板的定义: templateclass T struct less : public binary_functionT, T, bool { bool operator()(const T x, const T y) { return x y ; } const; }; //less模板是靠 来比较大小的; ;multiset的成员函数;multiset 的用法 #include set using namespace std; class A { }; int main() { multisetA a; a.insert( A()); //error } ;multiset 的用法 #include set using namespace std; class A { }; int main() { multisetA a; a.insert( A()); //error } ;multiset 的用法示例;struct MyLess { bool operator()( const A a1, const A a2) //按个位数比大小 { return ( a1.n % 10 ) (a2.n % 10); } }; typedef multisetA MSET1; //MSET1用 比较大小 typedef multisetA,MyLess MSET2; //MSET2用 MyLess::operator()比较大小 int main() { const int SIZE = 6; A a[SIZE] = { 4,22,19,8,33,40 };

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档