资讯专栏INFORMATION COLUMN

初探STL容器之Vector

赵春朋 / 1200人阅读

vector

特点:

1.可变长的动态数组
2.使用时包含头文件 #include
3.支持随机访问迭代器
• 根据下标随机访问某个元素时间为常数
• 在尾部添加速度很快
• 在中间插入慢

成员函数

初始化

[cpp] view plaincopy
01.vector();              初始化成空  
02.vector(int n);               初始化成有n个元素  
03.vector(int n, const T & val);     初始化成有n个元素, 每个元素的值都是val,类型是T  
04.vector(iterator first, iterator last);  初始化为与别的容器上区间[first, last)一致的内容  

举例:

1.创建一个int类型的空的vector对象:

  

vector intvec; 

2.创建一个包含5个int类型数据的vector:

 

 vector intvec(5);

3.创建一个包含5个int类型数据的vector,并且都初始化为2:

vector intvec(5, int(2));

4.通过复制某vec容器来创建

vector intvec(vec.begin+M,vec.begin+N)

元素的访问

intvec.at(index) 

返回由index指定的位置上的元素

intvec[index]

返回由index指定的位置上的元素

举例:

[cpp] view plaincopy
01.include   
02.#include   
03.using namespace std;  
04.int main()  
05.{  
06.    vector vec(10);  
07.    for (int i = 0;i != vec.size();i++)  
08.    {  
09.        vec.at(i) = i;  
10.        //vec[i] = i ;  
11.    }  
12.  
13.    for (int i = 0;i != vec.size();i++)  
14.    {  
15.        cout << vec.at(i)<

容器的大小

表达式

作用

intvec.capacity()

返回不重新分配空间可以插入到容器intvec中的元素的最大个数

intvec.empty() 

容器intvec为空,返回true;否则,返回false

Intvec.size()

返回容器intvec中当前的个数

intvec.resize(num)

将元素个数改为num。如果size()增加,默认的构造函数负责创建这些新元素

intvec.resize(num, elem)

将元素个数改为num。如果size()增加,默认的构造函数将这些新元素初始化为elem

举例:

[cpp] view plaincopy
01.#include   
02.#include   
03.using namespace std;  
04.int main()  
05.{  
06.    vector vec1;  
07.    cout << vec1.empty()< vec2(20);  
11.    cout << vec2.empty()< vec3(15,1);  
15.    cout << vec3.capacity()<

容器的操作

语句

 作用


intvec.clear()  

从容器中删除所有元素

intvec.erase(position) 

删除由position指定的位置上的元素

intvec.erase(beg,end)

删除从beg到end-1之间的所有元素

intvec.insert(position, elem)

将elem的一个拷贝插入到由position指定的位置上,并返回新元素的位置

intvec.inser(position, n, elem)

将elem的n个拷贝插入到由 position指定的位置上

intvec.insert(position, beg, end)

将从beg到end-1之间的所有元素的拷贝插入到intvec中由position指定的位置上

intvec.push_back(elem) 

将elem的一个拷贝插入到vector的末尾

intvec.pop_back()   

删除最后元素

intvec.front()

返回第一个元素的引用,不检查容器是否为空

Intvec.back()

返回最后一个元素的引用,不检查容器是否为空

[cpp] view plaincopy
01.#include   
02.#include   
03.using namespace std;  
04.int main()  
05.{  
06.    vector vec(10,1);  
07.    cout< vec1(1,1);  
12.    vec1.insert(vec1.begin()+1,2); //在该位置插入,把原来该位置以其以后的元素整体后移  
13.    for(int i = 0;i != vec1.size();i++)  
14.        cout<  
02.#include   
03.using namespace std;  
04.int main()  
05.{  
06.    vector vec(10,1);  
07.    vec.push_back(2);//12  
08.  
09.    cout<

二维数组

vector< vector > v(3);

//v有3个元素,
//每个元素都是vector 容器

[cpp] view plaincopy
01.#include   
02.#include   
03.using namespace std;  
04.int main() {  
05.    vector< vector > v(3);  
06.    for(int i=0; i

输出:

0 1 2 3

0 1 2 3

0 1 2 3

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64127.html

相关文章

  • 初探STL关联容器

    摘要:更加实际的定义应该是一个集合是一个容器,它其中所包含的元素的值是唯一的。对而言,键只是指存储在容器中的某一成员。成员函数构造函数中的元素都是模板类对象。元素按照成员变量从小到大排列,缺省情况下用定义关键字的小于关系。 分类:set, multiset, map, multimap 特点:内部元素有序排列,新元素插入的位置取决于它的值,查找速度快。 常用函数: find: 查找等于...

    objc94 评论0 收藏0
  • 熬夜爆肝!C++核心STL容器知识点汇总整理【3W字干货预警 建议收藏】

    摘要:拷贝构造函数示例构造无参构造函数总结容器和容器的构造方式几乎一致,灵活使用即可赋值操作功能描述给容器进行赋值函数原型重载等号操作符将区间中的数据拷贝赋值给本身。清空容器的所有数据删除区间的数据,返回下一个数据的位置。 ...

    wayneli 评论0 收藏0
  • STL容器deque

    摘要:如果增加,默认的构造函数将这些新元素初始化为队列当前的元素个数交换两个队列两个重载和小结向量容器,使用线性存储结构,可以像数组一样随机下标访问元素,还可以在尾部插入元素用函数。 deque 特点: 1.双向队列 2.使用时包含头文件 #include 3.deque容器与vector类似,用动态数组来管理元素,支持随机访问。 4.与vector不同的是deque的动态数组首尾...

    yy13818512006 评论0 收藏0
  • 初探STL算法

    摘要:算法部分主要由头文件组成。数值算法对容器内容进行数值计算。在指定范围内查找由输入的另外一对标志的第二个序列的最后一次出现。重载函数使用自定义比较操作。删除指定范围内所有等于指定元素的元素。返回,指出序列中最小的元素。 STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象。 分类 STL中算法大致分为...

    nanfeiyan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<