原创 【博客大赛】《C++ Primer》学习笔记(八)Vector

2016-3-15 21:01 1160 16 16 分类: MCU/ 嵌入式 文集: Qt和Cpp
Vector是C语言里面没有的概念。
Vector是Container(容器)的一种,有关容器更多的留在后面再说。

要使用Vector,首先要包含头文件,并且声明命名空间:
#include
using std::vector;

Vector是一个类的模板(template)。
C++有类的模板,也有函数的模板。以后会学习怎样创建模板,现在只需要了解如何使用它。

模板自身并不是类或者函数,它们是用来创建类或者函数的指令。这个过程称为实例化。
为了将模板实例化,我们需要提供额外的信息。

为了将Vector实例化,我们需要提供的额外信息是Vector持有的对象类型:
vector ivec;
vector sales_vec;
vector> file;  //旧版的C++需要写成 >

我们可以创建任何类型的Vector,整型、类或者Vector自身。
引用并不是对象,因此不能为引用创建Vector。

有很多种方法可以初始化Vector:
vector v1
vector v2(v1)
vector v2 = v1
vector v3(n, val)
vector v4(n)
vector v5{a,b,c...}
vector v5 = {a,b,c...}

vector v1;//它定义了一个空的向量
空向量看起来没什么用,但是我们可以动态的往向量里面添加内容。
实际上,大部分使用都是这么做的。

Vector初始化的时候,使用括号(parentheses)和使用大括号(curly braces),
有非常有意思的区别。编译器会聪明的配置它们。

----------------
如何为Vector增加元素?
使用push_back增加新的最后一个。

先来一个整型数的例子:
vector v2;
for (int i = 0; i != 100; i++)
    v2.push_back(i);

再来一个string的例子:
string word;
vector text;
while (cin >> word)
    text.push_back(word);

由于Vector的长度可变,因此在使用range for的时候,不要在循环里面增加它的长度。

----------------
v.empty()
v.size()
v.push_back()
v[n]
v1 = v2
v1 = {a,b,c...}
v1 == v2
v1 != v2
<,<=,>,>=

这些操作和string类似。

size_type的用法也和string类似,除了vector必须指定元素类型:
vector::size_type

同string一样,vector也可以使用下标来访问元素;
同string一样,vector的下标越界也是不会被检查的。

文章评论0条评论)

登录后参与讨论
我要评论
0
16
关闭 站长推荐上一条 /2 下一条