vector学习笔记

来源:互联网 发布:数据挖掘的作用和意义 编辑:程序博客网 时间:2024/05/18 05:32
一、概述
1、集合中的每个对象都有一个与之对应的索引,索引用于访问对象。
2、使用vector必须包含头文件:#include<vector>
3、vector能容纳绝大多数的对象作为其元素,但是因为引用不是对象,所以不存在包含引用的vector。
二、使用
(1)定义
vector<int> ivec;
vector<vector<string>> file;
(2)初始化
vector<T> v1;  //创建了一个空vector
vector<T> v2(v1);
vector<T> v2=v1;
vector<T> v3(n,val); //v3包含了n个重复的元素,每个元素的值都是val
vector<T> v4(n);  //v4包含了n个重复地执行了值初始化的对象
vector<T> v5{a,b,c};  //注意是花括号,不是圆括号
vector<T> v5={a,b,c};
(3)添加元素
(a)push_back负责把一个值当成vector对象的尾元素“压到(push)”vector对象的“尾端(back)”,不能使用下标形式添加元素。
v2.push_back(i);
text.push_back(word);
(b)vec.insert(vec.begin()+i,a);  //在第i+1个元素前面插入a
(4)删除元素
vec.erase(vec.begin()+2);  //删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);  //删除区间[i,j-1];区间从0开始
(5)访问元素:v2[n]
(6)vector大小:v2.size()
(7)清空: vec.clear()
(8)迭代器使用:
(a)begin负责返回指向第一个元素的迭代器,end负责返回指向容器“尾后元素的下一个位置”的迭代器,该迭代器指示的是容器的一个本不存在的“尾后”元素,如果容器为空,则begin和end返回的是同一个迭代器。eg. auto it1 = v.begin();
(b)迭代器基本操作
*iter  //返回迭代器iter所指元素的引用
iter->men  //解引用iter并获取该元素的名为men的成员,等价于(*iter).mem
++iter  //令iter指示容器中的下一个元素
iter1==iter2  //若两个迭代器指示的是同一个元素或者它们是同一个容器的尾后迭代器,则相等
(c)迭代器运算
iter + n  //迭代器加上一个整数值扔得一个迭代器,迭代器指示的新位置与原来相比移动了若干个元素
iter1 - iter2  //两个迭代器相减的结果是它们之间的距离
iter1 <= iter2  //左侧迭代器指向的容器位置在右侧迭代器指向位置之前
三、算法
1、翻转元素
reverse(vec.begin(),vec.end());  //将元素翻转
2、排序
sort(vec.begin(),vec.end());  //默认是按升序排列,即从小到大

0 0
原创粉丝点击