(他说必须插一张图)
标准库类型vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。因为vector“容纳着”其他对象,所以他也常被称作容器(container)。
要想使用vector,必须包含适当的头文件。在后续的例子中,都将假定做了如下声明:- #include using std::vector;
复制代码 c++语言既有类模板,也有函数模板,其中vector是一个类模板。
模板本身不是类或函数,相反可以将模板看作为编译器生成类或函数编写的一份说明。编译器根据模板创建类或函数的过程称为实例化,当使用模板时,需要指出编译器应把类或函数实例化成何种类型。比如,我们希望vector内存放的对象是int型,需要这样声明:- vector ly; //ly存放int类型的对象
复制代码 [h1]定义和初始化 vector 对象[/h1]- vector ly; //是一个空vector,他潜在的元素是T类型的,执行默认初始化
复制代码- [/code]
- [code]vector a(ly); //a是包含ly中所有元素的副本
复制代码- [/code]
- [code]vector a = ly; //等价于a(ly)
复制代码- [/code]
- [code]vector ly(n, val); //ly包含n个重复的元素,每个元素的值都是val
复制代码- [/code]
- [code]vector ly(n); //ly包含了n个重复地执行了值初始化的对象
复制代码- [/code]
- [code]vector ly{a, b, c...}; //ly包含了初始值个数的元素,每个元素被赋予相应的初始值
复制代码- [/code]
- [code]vector ly = {a, b, c...}; //同ly{a, b, c...}
复制代码 [h2]列表初始值还是元素数量?[/h2]- vector ly(10, 1); //十个 1vector ly{10, 1}; //一个 10 一个 1vector ly(10); //十个元素每个都是 0vector ly{10}; //一个元素 10
复制代码 [h1]向 vector 中添加元素[/h1]- vector ly; //空 vector 对象int n;while (cin >> n) ly.push_back(n); //把n添加到 ly 尾端
复制代码 [h1]其他 vector 操作[/h1]- ly.empty(); //如果 ly 不含有任何元素,返回真;否则返回假
复制代码- [/code]
- [code]ly.size(); //返回 ly 中元素的个数
复制代码- [/code]
- [code]ly.push_back(n); //向 ly 尾端添加一个值为 n 的元素
复制代码- [/code]
- [code]ly[n] //返回 ly 中索引为 n 位置上元素的引用
复制代码- [/code]
- [code]ly = v; //用 v 中元素的拷贝替换 ly 中的元素
复制代码- [/code]
- [code]ly = {a, b, c...}; //用列表中元素的拷贝替换 ly 中的元素
复制代码- [/code]
- [code]ly == v; //ly 和 v 相等当且仅当他们的元素数量相同且对应位置的元素值都相同
复制代码- [/code]
- [code]ly != v; //顾名思义,以字典序进行比较
复制代码 [h1]其他有趣的例子[/h1][h2]遍历 vector 中元素[/h2][code]vector ly{1, 2, 3, 4, 5, 6, 7, 8, 9};for (auto a : ly) //注意,范围for循环中不能改变原来序列的大小 cout |
|