C++ Vector详解与用法示例
需积分: 9 45 浏览量
更新于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`等其他容器。因此,选择合适的容器需要根据具体应用场景来决定。
416 浏览量
562 浏览量
260 浏览量
180 浏览量
438 浏览量
200 浏览量
107 浏览量
151 浏览量
158 浏览量
![](https://profile-avatar.csdnimg.cn/1bbb7eba2c174d3184f03ebd48a1285d_sinat_38341820.jpg!1)
小甾
- 粉丝: 2
最新资源
- Eclipse IDE基础教程:从入门到精通
- 设计模式入门:编程艺术的四大发明——可维护与复用
- Java正则表达式基础与Jakarta-ORO库应用
- 实战EJB:从入门到精通
- PetShop4.0架构解析与工厂模式应用
- Linux Vi命令速查与操作指南
- Apriori算法:挖掘关联规则的新方法与优化
- ARM9嵌入式WinCE 4.2移植实战教程
- ISO9000-2000质量管理体系标准解析
- ASP.NET 实现无限级分类TreeView教程
- 微软解决方案框架MSF:基本原理与团队模型解析
- 项目绩效考核:误区、方法与挑战
- C++数据结构与算法习题答案详解
- C语言编程实践:经典案例与算法解析
- 探索55个Google奇趣玩法,乐在其中
- JSF:Java构建高效Web界面的新技术