C++ STL-vector
1.vector基础
vector是同一类型对象的集合 每一个对象都对应了一个整数的索引值 和string一样
我们在使用vector之前 都要包含相应的头文件
#include <vector>
using std::vector;
vector的定义
vector<T>ivec;//T为保存对象的类型 可以是其他的各种类型 结构体也行 ivec是创建的容器名称
2.vector的定义与初始化
vector<T>v1; //创建一个空的容器 vector<T>v2(n,i); //创建一个vector容器 其中包括n个值为i的元素 vector<T>v3(v2); //创建一个v3 是v2的副本 vector<T>v4(n); //创建一个有初始化的元素的n个副本
3.vectot的增长
vector对象的重要属性在于 vector可以在运行时高速的添加元素
因为vector增长的效率高 所以在元素值已知的条件下 最好是动态的添加元素
vector在动态添加元素的过程中 如果发现分配的空间不够 会成倍的扩增空间
所以在已知元素的最大个数的情况下 我们可以设置vector的大小
vector<T>v(n); 将容器的大小定为n 以防止其浪费过多的存储空间
4.vector对象的操作
v.empty(); //判断容器v是否为空 v.size(); //返回容器v的大小 v.push_back(t); //往容器v中添加元素t v[i] //返回容器v中索引值为i的元素 v1==v2 //判断容器v1,v2是否相等 v1=v2 //将容器v2复制给予v1
5.vector的下标操作
一般情况之下 我们可能会使用int型的变量来表示vector的下标 来遍历vector
for(int i=0;i<v.size();++i)
但是我并不推荐你们使用int型去遍历 可以的话 应该养成使用vector<T>::size_type类型的变量去遍历
for(vector<T>::size_type ix=0;ix!=v.size();++ix)
6.迭代器简介
除了使用下标来访问vector对象的元素外 标准库还提供了一种访问元素的方法 使用迭代器 迭代器是一种检查容器中元素并遍历元素的数据类型
标准库为每一种标志容器提供了一个迭代器类型
下面简单的讲解一下vector迭代器的使用 其他的迭代器使用方法基本差不多
迭代器的定义:
vector<T>::iterator iter;
这条语句定义了一个名为iter的迭代器 其数据类型是vector<T>定义的iterator类型
这里附加讲一下 vector容器的begin与end操作
v.begin(); v.end(); for(iter=v.begin();iter!=v.end();++iter)
begin与end用于返回迭代器 begin返回的是容器的开始位置 end返回的接受位置
所以我们可以使用上面这种循环去遍历vector容器
同时我们可以使用迭代器直接修改日期中的值
*iter=k;
*iter->num=k;
如果容器保存的是数字字符类型的元素 直接像上面第一行一样修改值 是结构体的话 就参照第二行
稍微提一下 存在const的迭代器 这种迭代器只有读的权力 不能改写容器中的值
vector<T>::const_iterator iter;
1.vector基础
vector是同一类型对象的集合 每一个对象都对应了一个整数的索引值 和string一样
我们在使用vector之前 都要包含相应的头文件
#include <vector>
using std::vector;
vector的定义
vector<T>ivec;//T为保存对象的类型 可以是其他的各种类型 结构体也行 ivec是创建的容器名称
2.vector的定义与初始化
vector<T>v1; //创建一个空的容器
vector<T>v2(n,i); //创建一个vector容器 其中包括n个值为i的元素
vector<T>v3(v2); //创建一个v3 是v2的副本
vector<T>v4(n); //创建一个有初始化的元素的n个副本
3.vectot的增长
vector对象的重要属性在于 vector可以在运行时高速的添加元素
因为vector增长的效率高 所以在元素值已知的条件下 最好是动态的添加元素
vector在动态添加元素的过程中 如果发现分配的空间不够 会成倍的扩增空间
所以在已知元素的最大个数的情况下 我们可以设置vector的大小
vector<T>v(n); 将容器的大小定为n 以防止其浪费过多的存储空间
4.vector对象的操作
v.empty(); //判断容器v是否为空
v.size(); //返回容器v的大小
v.push_back(t); //往容器v中添加元素t
v[i] //返回容器v中索引值为i的元素
v1==v2 //判断容器v1,v2是否相等
v1=v2 //将容器v2复制给予v1
5.vector的下标操作
一般情况之下 我们可能会使用int型的变量来表示vector的下标 来遍历vector
for(int i=0;i<v.size();++i)
{ }
但是我并不推荐你们使用int型去遍历 可以的话 应该养成使用vector<T>::size_type类型的变量去遍历
for(vector<T>::size_type ix=0;ix!=v.size();++ix)
{ }
6.迭代器简介
除了使用下标来访问vector对象的元素外 标准库还提供了一种访问元素的方法 使用迭代器 迭代器是一种检查容器中元素并遍历元素的数据类型
标准库为每一种标志容器提供了一个迭代器类型