C++中vector关键字的使用笔记
在C++编程语言中,`vector`是一个非常重要的标准模板库(STL)容器,它提供了一种动态数组的功能,允许我们在程序运行时灵活地调整数组的大小。这篇笔记将详细介绍`vector`的定义、初始化以及元素的访问方法。
首先,`vector`的定义方式是使用模板类`std::vector`,基本语法如下:
```c++
vector<typename> name;
```
这里的`typename`是你要存储的数据类型,可以是基本类型如`int`、`double`,也可以是自定义类型或者其他的STL容器。例如,如果你想要一个存储整数的`vector`,可以写成`vector<int> vi;`。
对于二维`vector`,可以这样定义:
```c++
vector<vector<typename>> Arrayname[size];
```
这将创建一个一维`vector`,其中每个元素都是另一个`vector`。例如,`vector<int> vi[100];`会创建一个包含100个`vector<int>`元素的数组。
#### 常用初始化方法:
1. 使用花括号直接赋值:
```c++
vector<int> v{1, 2, 3, 4, 5}; // 直接使用花括号赋值
for (auto i : v) cout << i << ""; // 输出12345
```
2. 使用圆括号赋值:
```c++
vector<int> v(5); // 初始化5个值为0的元素
for (auto i : v) cout << i << ""; // 输出00000
vector<int> v(5, 4); // 初始化5个值为4的元素
for (auto i : v) cout << i << ""; // 输出44444
```
#### `vector`容器内元素的访问:
1. 通过下标访问:
对于定义为`vector<int> v`的`vector`,可以使用`v[0]`、`v[1]`、`v[2]`等方式访问元素。注意,下标必须在合法范围内(即`0`到`v.size() - 1`)。`v[0]`、`v[1]`、`v[2]`等价于`*(v.begin())`、`*(v.begin() + 1)`、`*(v.begin() + 2)`。
2. 通过迭代器访问:
迭代器是STL中用于遍历容器内元素的一种机制,它可以看作是类似于指针的对象。定义迭代器的代码是:
```c++
vector<typename>::iterator it;
```
然后通过迭代器`it`访问`vector`的元素,例如:
```c++
it = v.begin(); // 将it指向v的第一个元素
cout << *it << ""; // 输出第一个元素
it++; // 移动到下一个元素
cout << *it << ""; // 输出第二个元素
```
此外,`vector`还提供了许多其他操作,如插入元素(`push_back()`、`insert()`)、删除元素(`pop_back()`、`erase()`)、查找元素(`find()`)等。`vector`的大小可以通过`size()`函数获取,可以通过`reserve()`预先分配内存以优化性能,而`resize()`则可以改变`vector`的大小并可能填充默认值。
`vector`在C++中扮演着至关重要的角色,它结合了数组的便利性和动态数组的灵活性,是实现动态数据结构和高效算法的重要工具。在实际编程中,掌握`vector`的使用能极大地提高代码的效率和可读性。