C++ Vector详解与用法示例

需积分: 9 6 下载量 120 浏览量 更新于2024-09-12 收藏 74KB DOC 举报
"这篇文档主要介绍了C++中的标准模板库STL中的vector容器的使用方法,包括其定义、初始化、值初始化以及一些重要的操作,如push_back、size和resize等。" C++中的`std::vector`是一个动态数组,它是STL容器中的一种,提供了类似于数组的功能,但比传统数组更强大,因为它可以自动调整大小。`vector`的存储空间是连续的,这使得它的元素可以被快速访问,并且可以高效地进行迭代器遍历。 1. **定义和初始化** - `vector<typeName> v1;` 定义了一个空的`vector`。 - `vector<typeName> v2(v1);` 或 `v2 = v1;` 或 `vector<typeName> v3(v1.begin(), v1.end());` 这些都是创建`v1`的副本。 - `vector<typeName> v3(n, i);` 创建一个包含`n`个值为`i`的`vector`。 - `vector<typeName> v4(n);` 创建一个包含`n`个默认值(对于基本类型通常是0)的`vector`。 - `vector<int> v5(a, a+5);` 使用数组`a`的前5个元素初始化`vector`。 - `vector<类型> 标识符(最大容量,初始所有值);` 还可以指定最大容量和初始值。 2. **值初始化** - 如果未指定初始化值,`vector`会进行值初始化,即使用默认构造函数创建元素。 - 对于有构造函数的类类型元素,`vector`会使用类的构造函数进行初始化。 - 对于无构造函数的类类型元素,`vector`会创建一个带有初始值的对象来初始化元素。 3. **重要操作** - `v.push_back(t)` 在`vector`末尾添加元素`t`,使`vector`的大小增加。 - `v.size()` 返回`vector`中元素的数量,是无符号整型`size_type`。 - `v.resize(new_size)` 改变`vector`的大小为`new_size`,如果扩大了,则用默认构造函数创建新元素;如果缩小了,则超出范围的元素被销毁。 - `v.resize(new_size, value)` 与`resize(new_size)`类似,但新添加的元素初始化为`value`。 除此之外,`vector`还有其他一些操作,如: - `v.insert(iterator pos, const T& val)` 在指定位置`pos`插入一个元素`val`。 - `v.erase(iterator pos)` 删除指定位置的元素。 - `v.clear()` 清空`vector`,删除所有元素。 - `v.begin(), v.end()` 分别返回指向`vector`第一个元素和超出最后一个元素的迭代器。 - `v.at(index)` 安全访问`vector`的元素,如果索引越界会抛出异常。 - `v.front(), v.back()` 分别返回`vector`的第一个和最后一个元素。 `vector`的这些功能使其成为C++中非常常用的容器,尤其是在需要动态增长数组或需要高效访问元素的情况下。不过,由于`vector`的存储是连续的,所以插入和删除元素(尤其是中间元素)可能涉及到大量元素的移动,这在性能上可能不如`list`等其他容器。因此,选择合适的容器需要根据具体应用场景来决定。