vector(向量):
向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。
一、vector的声明与初始化——vector <> a()
- <数据类型>
- a变量名
- ()
1.数字——(最大容量,初始所有值)
vector < int> (10) //初始大小是10 的向量
vector < int> (10,1) //初始大小是10,值均为1 的向量
2.用其他向量初始化(例已知向量b)
vector < int> b(a); //用向量a初始化向量b
vector < int> b(a.begin(), a.begin()+3) ;//将a向量中从第0个到第2个(共3个)作为向量b的初始值
3.用数组初始化 (例已知数组b[ ])
vector< int > a(b, b+5) ;
//将数组b的前5个元素作为向量a的初值
vector< int > a(&b[1], &b[4]) ;
//将b[1] - b[4]范围内的元素作为向量a的初值
二、输入输出
1.对其中部分元素进行输入
cin >>a[2] ;
cin >>a[5] ;
cin >>a[6] ;
2.全部输出
int i ;
for(i=0; i<a.size(); i++)
cout<<a[i]<<" " ;
在上例中讲元素全部输出部分的代码就可以改写为:
vector<int>::iterator t ;
for(t=a.begin(); t!=a.end(); t++)
cout<<*t<<" " ;
- (a.begin() , a.begin()+3) 表示向量起始元素位置到起始元素+3之间的元素位置。(a.begin() , a.end())则表示起始元素和最后一个元素之外的元素位置。
- *t 为指针的间接访问形式, 意思是访问t所指向的元素值。
三、基本操作
a.size(); //向量a中元素个数
a.empty(); //判断向量是否为空
a.clear(); //清空向量中元素
a.insert( , , ); //插入
a.erase( , ) ; //删除
b.swap(a) ; //交换向量a,b
复制 a=b;
比较
- 保持 ==、!=、>、>=、<、<= 的惯有含义 ;
- 如: a == b ; //a向量与b向量比较, 相等则返回1
1.a.insert( , , );
- (&&,@@)—— 将@@插入到&&前
- (, ,)
①(&&,3,@@)——在&&前插入3个@@
② b.insert(b.begin(), a.begin(), a.end()) ;
//将a.begin(), a.end()之间的全部元素插入到b.begin()前
2.a.erase( , );
- ()删除单一元素
b.erase(b.begin()) ; //将起始位置的元素删除 - (,)将之间元素删除
b.erase(b.begin(), b.begin()+3) ; //将(b.begin(), b.begin()+3)之间的元素删除
参考:https://www.cnblogs.com/aminxu/p/4686332.html.
STL库:
vector是C++ STL库中的内容
C++ STL——标准模板库
是一套功能强大的 C++ 模板类,提供了通用的模板类和函数。
这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。
一、STL包括以下三个组件:容器、算法、迭代器
- 容器:
用来管理某一类对象的集合。
C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。 - 算法:
提供了执行各种操作的方式,作用于容器。
如对容器内容执行初始化、排序、搜索和转换等操作。 - 迭代器
用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。
二、一些函数:
push_back( ) 在向量的末尾插入值,如果有必要会扩展向量的大小。
size( ) 显示向量的大小。
begin( ) 返回一个指向向量开头的迭代器。
end( ) 返回一个指向向量末尾的迭代器。