STL源码剖析1

爱被打了一巴掌 2022-06-09 06:37 331阅读 0赞

stl概论

stl以抽象概念为主题而非以实际类为主的结构,形成了一个严谨的接口标准。在此接口之下,任何组件都有最大的独立性,并以所谓迭代器胶合起来,或以所谓配接器互相配接,或以所谓仿函数动态选择某种策略。

C++允许我们自行定义型别,C++template允许我们将型别参数化,藉由两者结合并透过traits变成技法形成STL。

stl六大组件:containers,algorithms,iterators,functors,adapters,allocators。

template >

class stack

{

// friend bool operator == (const stack&, const stack&); // OK

// friend bool operator == (const stack&, const stack&); // OK

friend bool operator == <> (const stack&, const stack&); // OK

friend bool operator < <> (const stack&, const stack&);

// friend bool operator == (const stack&, const stack&); // error

};

….. // 实现省略

这种奇特的语法是为了实现所谓的 bound friend templates,也就是所说 class template 的某个具体实现与friend function template的某个具现体有一对一的关系。

int main()

{

stack x;

stack y;

cout << (x == y) << endl; // OK

stack y1;

cout << (x == y1) << endl; // error

}

发表评论

表情:
评论列表 (有 0 条评论,331人围观)

还没有评论,来说两句吧...

相关阅读

    相关 STL剖析】Sort算法

    前言:sort算法必须拿出来单独将,因为它是STL所有算法中最复杂最庞大的一个,就像我肯定会把copy算法单独列出来一样,这两个算法太重要了。 提示:STL算法特点是,前两个

    相关 STL剖析--vector

    vector容器概述       vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变

    相关 STL剖析1

    stl概论 stl以抽象概念为主题而非以实际类为主的结构,形成了一个严谨的接口标准。在此接口之下,任何组件都有最大的独立性,并以所谓迭代器胶合起来,或以所谓配接器互相配接,或