泛型编程

Karima ·
更新时间:2024-11-10
· 855 次阅读

STL(Standard Template Library)主要由两种组件构成:容器(container)和操作容器类的泛型算法(generic algorithm)。
      容器包括:vector、list、set、map等。其中vector和list是熟悉容器。一次从第一个元素到最后一个。主要进行迭代(iterate)操作。map和set是关联容器。可以快速寻找容器中任意值。map由成对的key/value组成,key用于查找,value存放数据。例如通讯录中姓名用作key,号码用作value。set仅含key,查找时是判断某值是否存在于所有值中。
所有容器共通操作:

begin()和end():返回指向首元素/尾元素的iterator。 insert()和erase():插入和删除某个元素。 equality(==)和inequality(!=):返回true或false。 assignment(=):将某个人容器复制给另一个容器。 empty():判空操作,空时返回true,否则false。 size():获取容器内含有的元素数目。 clear():删除所有元素。

泛型算法是操作容器类的行为,不关心数据类型,于容器相互独立。包括70多种:

search 查找:find(),count() adjacent_find(),find_if(),count_if(),binary_search(),find_first_of(). sorting(排序)、ordering(整理):merge(),partial_sort(),partition(),random_shuffle(),reverse(),rotate(),sort(). copy(复制)、deletion(删除)、substitution(替换):copy(),remove(),remove_if(),replace(),replace_if(),swap(),unique(). relational(关系):equal(),includes(),mismatch(). generation(生成)、mutation(质变):fill(),for_each(),generate(),transform(). numeric(计数):accmulate(),adjacent_difference(),partial_sum(),inner_product(). set(集合):set_union(),set_difference().

查找某值:

    template     elemType * find(const vector &vec, elemType value){         for(int i = 0; i < vec.size(); i++){             if(vec[i] == value)                 return &vec[i];         return 0;         }     }
作者:雲烟



泛型 泛型编程

需要 登录 后方可回复, 如果你还没有账号请 注册新账号