《C++ STL示例全集》是一本全面讲解标准模板库(STL)的书籍,通过丰富的实例深入浅出地介绍了容器、算法和函数对象等内容,帮助读者熟练掌握STL编程技巧。
本段落将详细介绍C++ STL(Standard Template Library,标准模板库)中的关键知识点,并重点介绍“Vector”部分的应用示例。STL为开发者提供了大量的数据结构和算法实现,极大地提高了编程效率。
### 一、Vector构造函数
#### 1. 空向量
```cpp
vector v1; // 创建一个空的vector对象。
```
这里创建了一个没有任何元素的空`vector`。
#### 2. 创建固定大小的向量
```cpp
vector v2(10); // 创建一个包含10个默认构造的元素的vector。
```
此处创建了一个包含10个元素的`vector`,这些元素都是默认构造的。对于内置类型如`int`,默认值为`0`。
#### 3. 创建并初始化所有元素
```cpp
vector v3(10, 0); // 创建一个包含10个元素且每个元素初始值都为0的vector。
```
这里创建了一个包含10个元素的`vector`,并且显式地将所有元素的初始值设置为`0`。
#### 4. 从数组初始化
```cpp
string str[] = {Alex, John, Robert};
vector v4(str, str + 3); // 使用数组首尾地址创建一个vector。
```
这段代码通过传入数组的首尾地址来创建一个`vector`。这里需要注意的是,`str` 和 `str + 3` 分别表示数组的起始位置和结束位置(不包括该位置)。因此,`v4` 将会包含三个字符串元素。
#### 5. 复制构造
```cpp
vector v5(v4); // 使用复制构造函数创建一个新的vector。
```
这是使用复制构造函数来创建一个新的`vector`,其内容与另一个`vector`完全相同。
### 二、Vector的assign方法
#### 1. 从数组赋值
```cpp
int ary[] = {1, 2, 3, 4, 5};
vector v;
v.assign(ary, ary + sizeof(ary)/sizeof(int)); // 使用数组初始化vector。
```
这段代码首先创建了一个整型数组`ary`,然后使用`assign`方法将`ary`中的元素赋值给一个新创建的`vector`对象。
#### 2. 指定值重复赋值
```cpp
v.assign(3, 100); // 将vector的内容替换为三个初始值均为100的元素。
```
这里使用`assign`方法将`v`的内容替换为三个值均为100的元素。
### 三、Vector的at方法
```cpp
vector v(3, 0);
v[0] = 100;
v.at(1) = 200; // 使用at()安全地访问向量中的元素。
```
这里创建了一个包含三个初始值为`0`的元素的`vector`,并分别设置了第一个和第二个元素的值。注意,使用`at()`方法与方括号索引相比,它会在尝试访问之前检查索引是否越界。
### 四、Vector的back方法
```cpp
int lastElement = v.back(); // 获取向量中的最后一个元素。
```
`back() ` 方法用于获取vector对象中的最后一个元素。使用此方法前,请确保vector非空,否则会导致未定义行为。
通过以上示例可以看出,`vector` 是C++ STL 中非常强大的一种容器类型,它可以方便地存储和操作动态大小的数据集合,并提供了一系列高效的方法来管理内部元素如插入、删除等操作,从而极大地简化了编程工作。