C++ STL概述

C++标准库精要
本文介绍了C++标准库的基本概念,包括名字空间std的使用方式、头文件的区别及用途。详细阐述了实用工具,如pair类和auto_ptr类的功能与应用场景,并概述了STL的组成部分及其两种主要容器类型。

注:参考自《The C++ Standard Library》

一、基本概念

1. 名字空间std

三种使用方式:

(1) 直接用标识符std限定修饰。如:

std : : cout << std : : hex << 3.4 << std : : endl;

(2) 使用using声明。如:

using std : : cout;
using std : : endl;
cout << std : : hex << 3.4 << endl;

(3) 使用using指示。如:

using namespace std;
cout << hex << 3.4 << endl;

通常使用第(3)种方式。

2. 头文件

对C++:

#include <iostream>
#include <string>

对C:

#include <cstdlib> // was: <stdlib.h>
#include <cstring> // was: <string.h>

试比较:

#include <string> // C++ class string
#include <cstring> // char* functions from C

二、Utilities

<ultility>
<algorithm>

1. Pairs

类pair:将2个值作为一个单元。

容器类map和multimap用pair来管理它们的元素。pair的另一用途是返回2个值的函数。

2. 类auto_ptr

auto_ptr是一种智能指针。它是作为其引用的对象(如果有的话)的所有者角色的指针,这样,当一对象的auto_ptr被销毁时,它也自动被销毁。

auto_ptr的要求是其对象只有一个所有者。

auto_ptr提供了严格的所有关系的语义。这就意味着由于auto_ptr删除它所指向的对象,该对象就不应被其他对象所有。两个或多个auto_ptr不能同时拥有相同的对象。auto_ptr的拷贝构造函数和赋值操作符会改变其所引用对象的所有关系。如:

auto_ptr p; // p所拥有的对象:*P
auto_ptr q; // q所拥有的对象:*q
q = p; // 相当于*p = NULL; *q = *p,所有关系发生了转换
拷贝构造函数类似。

三、STL

1. STL组成

容器(Containers)
迭代器(Iterators)
算法(Algorithms)

STL的概念是基于数据和操作分离的。数据由容器类管理,操作由可配置的算法定义,迭代器是两者的粘合剂。

2. 容器

有2种常用的容器:

(1) Sequence containers:元素位置与其值无关,而是取决于插入的时间和空间。STL包括3个预定义的顺序容器类:vector、deque和list;

(2) Associative containers:元素的实际位置依赖于其值(根据某个排序规则,一般用二叉树来实现)。STL包括4个预定义的联合容器类:set、multiset、map和multimap。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值