C++STL中vector使用策略(一)

       vector是STL中一种可变大小数组的序列容器。就像数组一样,vector也采用连续存储空间来存储元素,也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效,但是又不像数组,它的大小是动态改变的。

       为了可以使用vector,必须在你的头文件中包含下面的代码

#include <vector>

创建一个vector

//
创建一个type类型的空vector对象a
 vector<type> a;
 //创建包含500个type类型的vercot
 vector<type> a(500);
 //创建包含500个tyep类型的vector,并且都初始化为0
 vector<type> a(500,0);
 //创建一个a的拷贝b
 vector<type> b(a);

向vector添加一个数据

/*vector添加数据的缺省方法是push_back()。push_back()函数表示将数据添加到vector的尾部,并按需分配内存。例如,向vector<int> a中添加9个数据*/
 for(int i = 1;I < 10;i++)
 {
     cin>>n;
    a.push_back(n);
 }

       访问vector中的数据

//a.at();
 //a[];
 vector<int> v;
 for(int i = 0; i < 7; i++)
 {
     v.push_back(i);
 }
 cout<<v.at(6)<<endl;
 cout<<v[6];

删除vector中的数据

 /.erase(it)
 vector<int>::iterator it = v.begin();
 while(it != v.end())
 {
     if(x == *it)//x为要删除的值,不是下标
     {
       /.erase(it);//容器在删除或插入一个元素后,原来的迭代器会失效
     it = v.erase(it);//这才是正确用法
   }
   else
       ++it;
 }
    it = v.begin();
   while(it != v.end())
   {
     cout<<*it<<endl;
     it++;
   }

       vector成员函数(容量)

函数

意义

v.size()

容量大小

v.max_size()

向量最大容量

v.resize()

更改向量大小

v.capacity()

向量真实大小

v.empty()

向量判空

       vector成员函数(修改)

函数

意义

v.assign()

多个元素赋值

v.push_back()

末尾添加元素

v.pop_back()

末尾删除元素

v.inser(it,n,x)

在迭代器it的前面插入n元素x

v.erase()

删除当前迭代器位置的元素

v.swap()

交换两个向量元素

v.clear()

清空向量元素

       vector成员函数(迭代器)

函数

意义

v.begin()

开始指针

v.end()

末尾指针

       vector成员函数(元素访问)

函数

意义

v[1]

下标访问

v.at(1)

下标访问

v.front()

访问第一个元素

v.back()

访问最后一个元素

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏十月梦想

函数

                                            函数体

683
来自专栏海天一树

用递归法把二叉树的叶子结点按从左到右的顺序连成一个单链表

一、例子 ? 1.png 上图中的二叉树的叶子结点,按从左到右的顺序连成的单链表如下图所示: ? 2.png 二、定义数据结构 typedef struct t...

5636
来自专栏运维技术迷

连仕彤博客[Python笔记] 判断0-9数字在字符串中出现的次数

要求 给定一些数字(0-9范围之间),判断数字在字符串中出现的次数。 例子的排序是依照算法的效率(时间复杂度)从低到高 例子1   # 定义数字 num = ...

3957
来自专栏用户2442861的专栏

STL关联容器-红黑树

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

613
来自专栏技术栈大杂烩

Python: 作用域(scope) 和 LEGB

不管在什么编程语言, 都有作用域这个概念.作用域控制在它范围内代码的生存周期, 包括名字和实体的绑定.

853
来自专栏数据魔术师

数据结构-线性表|顺序表|链表(中)

回到正题,继上次出了数据结构线性表的内容上以后,这次又给大家更新啦。这次介绍的是单链表和静态链表的内容,话不多说,开始我们的正题。 【注:代码下载请移步留言区】...

3498
来自专栏along的开发之旅

C#三元运算符?:高级点的用法

当看到,(selectionMethod==0)?(ISelectionMethod)new EliteSelection():            ...

863
来自专栏还债之路

每日一题--统计字符串出现的次数

使用awk统计出来指定字符串中重复出现的字符并重复出现了几次,现在只考虑有数字和字母,先区分大小写 eg: aaabbc------> a 重复出现3次,b重复...

984
来自专栏强仔仔

JavaScript中null和undefined的比较和区别

在JavaScript中很经常就会出现null和undefined这几种结果,今天就详细的介绍一下null和undefined的定义和区别。 null根据其名字...

1768
来自专栏北京马哥教育

wtfPython—Python中一些奇妙的代码

wtfPython是github上的一个项目,作者收集了一些奇妙的Python代码片段,这些代码的输出结果会和我们想象中的不太一样; 通过探寻产生这种结果的内部...

610

扫码关注云+社区