#include 的用法 | 您所在的位置:网站首页 › vector头文件不写为什么没报错 › #include 的用法 |
标准库Vector类型 使用需要的头文件: #include Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。
一、 定义和初始化 Vector v1; //默认构造函数v1为空 Vector v2(v1);//v2是v1的一个副本 Vector v3(n,i);//v3包含n个值为i的元素 Vector v4(n); //v4含有n个值为0的元素 二、 值初始化 1> 如果没有指定元素初始化式,标准库自行提供一个初始化值进行值初始化。 2> 如果保存的式含有构造函数的类类型的元素,标准库使用该类型的构造函数初始化。 3> 如果保存的式没有构造函数的类类型的元素,标准库产生一个带初始值的对象,使用这个对象进行值初始化。 三、Vector对象最重要的几种操作 1. v.push_back(t) 在数组的最后添加一个值为t的数据 2. v.size() 当前使用数据的大小 3. v.empty() 判断vector是否为空 4. v[n] 返回v中位置为n的元素 5. v1=v2 把v1的元素替换为v2元素的副本 6. v1==v2 判断v1与v2是否相等 7. !=、= 保持这些操作符惯有含义 vector容器类型 vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。 vector的构造
函数原型: template explicit vector(); // 默认构造函数,vector对象为空 explicit vector(size_type n, const T& v = T()); // 创建有n个元素的vector对象 vector(const vector& x); vector(const_iterator first, const_iterator last); 注:vector容器内存放的所有对象都是经过初始化的。如果没有指定存储对象的初始值,那么对于内置类型将用0初始化,对于类类型将调用其默认构造函数进行初始化(如果有其它构造函数而没有默认构造函数,那么此时必须提供元素初始值才能放入容器中)。
举例: vector v1; // 创建空容器,其对象类型为string类 vector v2(10); // 创建有10个具有初始值(即空串)的string类对象的容器 vector v3(5, "hello"); // 创建有5个值为“hello”的string类对象的容器 vector v4(v3.begin(), v3.end()); // v4是与v3相同的容器(完全复制)
vector的操作(下面的函数都是成员函数)
bool empty() const; // 如果为容器为空,返回true;否则返回false size_type max_size() const; // 返回容器能容纳的最大元素个数 size_type size() const; // 返回容器中元素个数 size_type capacity() const; // 容器能够存储的元素个数,有:capacity() >= size() void reserve(size_type n); // 确保capacity() >= n void resize(size_type n, T x = T()); // 确保返回后,有:size() == n;如果之前size()=(lhs, rhs) 就是 !(lhs, rhs)。
vector类的迭代器 vector类的迭代器除了支持通用的前缀自增运算符外,还支持算术运算:it + n、it - n、it2 - it1。注意it2 - it1返回值为difference_type(signed类型)。
注意,任何改变容器大小的操作都可能造成以前的迭代器失效。
应用示例
#include #include #include using namespace std; int main() { vector v(5, "hello"); vector v2(v.begin(), v.end());
assert(v == v2);
cout |
CopyRight 2018-2019 实验室设备网 版权所有 |