STL基础

1  It's important to realize that these templates are not class and member function definitions. Rather, they are instructions to the C++ compiler about how to generate class and member function definitions.  所以, 模板类是在编译时被替换的, 当编译时, 参数会替换成实际参数, 就像宏的处理一样.

 

2  Unless you have a compiler that has implemented the new export keyword, placing the template member functions in a separate implementation file won't work. Because the templates aren't functions, they can't be compiled separately.   意思就是, 模板类不能像普通类那样, 声明在.H中, 实现在.CPP中. 而是声明和实现都必须要同一个头文件中.

 

3

Using a Template Class
### STL(标准模板库)基础知识介绍 #### 什么是STL STL (Standard Template Library - 标准模板库),是C++标准库的关键部分,不仅提供了大量可复用的组件,还构建了一个包含多种数据结构和算法的软件框架[^1]。 #### 主要组成部分 STL主要由四个核心概念组成: - **容器(Container)** 容器用于存储不同类型的对象集合。常见的容器包括`vector`, `list`, `deque`, `set`, `map`等。每种容器都有各自的特点和适用场景。例如,`list`是一种双向链表,在任意位置插入或删除元素的时间复杂度为O(1)[^5]。 - **迭代器(Iterator)** 迭代器用来遍历容器中的元素。它们类似于指针,可以指向容器内的某个特定位置,并允许顺序访问相邻的数据项。通过迭代器操作,程序员能够以统一的方式处理各种不同的容器类型。 - **算法(Algorithm)** 提供了一系列通用的操作函数,如排序(`sort`)、查找(`find`)、复制(`copy`)等。这些算法被设计成独立于具体容器实现的形式,因此具有高度灵活性和广泛的适应性。对于自定义数据结构也可以轻松应用相应的算法逻辑[^4]。 - **仿函数(Function Object 或 Functor)** 类似于普通函数的对象实例化形式,通常用于定制某些行为模式下的比较规则或是其他运算方式。比如在使用`std::sort()`时可以通过传递一个仿函数来自定义排序依据。 ```cpp // 自定义仿函数示例 struct CompareById { bool operator()(const TDeviceInfo& lhs, const TDeviceInfo& rhs) { return strcmp(lhs.achDeviceId, rhs.achDeviceId) < 0; } }; ``` #### 使用优势 采用STL带来的益处显而易见: - 减少重复造轮子的工作量; - 利用了经过严格验证的标准库代码,提高了系统的稳定性和安全性; - 可以依赖专家级开发者优化后的高效能实现方案; - 推动了良好编码习惯的发展,促进了团队协作交流[^3]。 #### 实际应用场景举例 当涉及到UI界面展示有序列表的情况时,往往需要先对后台维护的数据集按照一定条件完成预处理工作——即排序过程。此时就可以借助STL所提供的强大工具箱来简化任务难度并提升性能表现。假设有一个保存着多个设备基本信息记录的数组,则可以直接调用内置方法对其进行快速排列组合。 ```cpp #include <algorithm> #include <string.h> bool compareByName(const TDeviceInfo &a, const TDeviceInfo &b){ return strcmp(a.achDeviceName,b.achDeviceName)<0; } int main(){ std::vector<TDeviceInfo> devices = /*...*/; // 对devices按名字升序排序 std::sort(devices.begin(), devices.end(), compareByName); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值