C++_vector

向量 vector是基于动态数组的类模板,可以根据需要增长,只能够在尾部快速插入和删除
template < typename T>
class vector{
public:
private: T* myarray;
}
向量定义
#include < vector>
vector<Element_type>objectName; 创建一个空vector;
vector<Element_type>objectName(initCap) 创建一个容量为initCap的vector
vector<Element_type>objectName(initCap,initVal)同上,但每个元素初始化为initVal
vector<Element_type> objectName(firstPtr,lastPtr);创建一个vector,内容从firstPtr(指针)到lastPtr(不含)的内存空间初始化
例:
int n; cin>>n;vectordubVector(n);
int n;double dubValue; cin>>n>>dubValue;vectordubVector(n,dubValue);
double a[]={1.1,2.2,3.3,4.4};vector(a,a+4);//对应第4个

vector操作:
v.capacity() 返回当前存储单元的数量
v.size() 返回当前存储值的个数
v.max_size() 返回最大存储单元个数
v.empty()判断是否为空
v.reserve(n) 增大v使其容量为n
v.push_back(value) 添加value到v的尾部
v.pop_back() 删除v的最后一个元素
v.front() 返回指向v的第一个元素的引用,可以用来修改元素值
v.back() 返回指向v的最后一个元素的引用
v[i] 返回下标为i的元素 不检查是否越界
v.at(i) 返回下标为i的元素 执行越界检查
v1=v2 将v2拷贝给v1
v1.swap(v2) 交换v1和v2的内容
v1==v2 判断是否相等
v1<v2 v1在字典顺序上小于v2返回true

迭代器(指针)
迭代器是一种检查容器内元素并遍历元素的数据类型。C++更趋向于使用迭代器而不是下标操作,
因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访问容器元素

vector< int>::iterator vecIter=v.begin() 指向第一个元素的迭代器(指针)v.end()指向最后一个元素后一个位置的迭代器

迭代器运算符
++ 当前位置移到下一个位置
- -当前位置前一个位置
* 去引用(取值)
= 赋值 it1=it2 使it1位置和it2一样
== != 比较是否指向同一个元素
+= -=
[] 下标运算符 it[n]返回指向当前位置后第n个元素的引用,注意不是指针,而是指针指的那个值

迭代器函数
v.begin()
v.end()
v.rbegin() 返回指向最后一个元素的逆迭代器
v.rend() 返回指向第一个元素的逆迭代器
v.insert(iter,value) 将value 插入到由iter指定的位置
v.insert(iter,n,value) 将value的n个拷贝插入到v中由iter给定的位置
v.erase(iter) 删除v中由iter指定的元素
v.erase(iter1,iter2)删除v中iter1~iter2处的值
后四个函数会自动移动元素到新的位置并更新v.size()和v.end()

二维vector
const int ROWS=3,COLUMNS=4;
vector<vector< double> > table(ROWS,vector< double>(COLUMNS,0.0)); //创建二维向量
table[0] :表示第0行
table[0][2]: 表示第0行第2列
table.size() 返回行数
table[i].size():返回列数
table.push_back(vector< double>(COLUMNS,0.0));//添加一行
添加列需要用循环 table[row].push_back(value);
注意二维vector并不一定必须是长方形,可以是锯齿形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值