C++ Vector详解:使用与二维数组定义

需积分: 9 3 下载量 110 浏览量 更新于2024-07-31 收藏 140KB DOC 举报
"C++ 中的`std::vector`类是一个重要的容器,用于动态数组的管理和操作。它允许在运行时动态地添加或删除元素。在C++编程中,`vector`是一个非常常用的工具,尤其在处理序列数据时。以下是关于`vector`类的一些关键知识点和用法。 1. **向量的创建与初始化** - `vector`可以不指定大小直接创建,如`vector<int> v;`,然后通过`push_back()`方法逐个添加元素。 - 可以通过指定初始大小和默认值进行初始化,如`vector<int> v(10, 0);`创建一个包含10个0的`vector`。 2. **元素的插入与访问** - `push_back()`方法将元素追加到`vector`末尾。 - `size()`成员函数返回`vector`中的元素数量。 - 使用索引访问元素,例如`v[0]`获取第一个元素。 - `begin()`返回指向第一个元素的迭代器,`end()`返回指向超出最后一个元素位置的迭代器,常用于遍历`vector`。 3. **迭代器的使用** - 迭代器是一种特殊指针,可以用来遍历`vector`的元素。如`vector<int>::iterator iter;`声明一个迭代器,然后通过`iter = v.begin();`和`iter != v.end();`条件进行循环遍历。 4. **二维`vector`的定义与操作** - 定义二维`vector`时,可以创建一个`vector`,其元素是其他`vector`。例如,`vector<vector<int>> Array(10, vector<int>(0));`创建一个10行的二维`vector`,每行初始为空。 - `push_back()`可以用于向二维`vector`的子`vector`中添加元素,如`Array[j].push_back(i);`。 - 遍历二维`vector`时,需要两个嵌套循环,一个用于行,一个用于列。 5. **动态扩展与内存管理** - 当`vector`容量不足时,它会自动扩展其容量,通常以一定比例(通常是1.5倍或2倍)增长。这个过程可能会导致元素重新分配,因此在性能敏感的代码中需要注意。 - `reserve()`函数可以预分配空间,避免不必要的自动扩展。 6. **其他成员函数** - `insert()`可以在指定位置插入元素。 - `erase()`可以删除一个或多个元素。 - `clear()`清除所有元素,但不释放内存。 - `capacity()`返回当前已分配的内存,可容纳的元素数量。 - `resize()`可以改变`vector`的大小,添加或删除元素。 7. **注意事项** - 访问超出`vector`范围的元素会导致未定义行为。 - 在`vector`的生命周期内,避免同时使用迭代器和修改`vector`(如插入、删除元素),因为这可能导致迭代器失效。 掌握这些基本操作后,可以利用`vector`的强大功能在各种场景下处理数组数据,包括动态数组、矩阵运算、数据结构实现等。在实际编程中,熟练运用`vector`可以提高代码的灵活性和效率。
2024-12-23 上传