STL顺序容器篇--数组容器

一.数组容器

数组容器包含vector, array, valarray

其中vector内存分配是动态分配(和string容器一样),而arrary的内存是固定的,定义多少就是多少。

下面主要介绍vector容器。

vector容器可以存放1. 基本数据类型(int,float,double等等,这里声明下,如果是char类型的,本质就和string容器一样了,所以可以直接使用string容器),2.结构体;3.指针,4对象。

二.vector容器开篇

#include<vector>

#include<iostream>

using namespace std;

void STLDefine()

{

  vector<int> vec;

}

int main()

{

    STLDefine();

    system("pause");

    return 0;

}

二 .vector容器的构造函数

1. 无参构造函数: vector<char>vec;

2.有参构造函数:vector<int>vec1(5);//输出5个0

                           vector<int>vec2(5,12);//输出5个12

                          vector<int>vec3(vec1);//这样vec3会输出vec1对象的5个0,注意只有参                                                               数类型一样才能,否则会报错

3. 涉及到迭代器

   vector<int>vec2(5,12);


  vector<int>::iterator ite;

  vector<int>::iterator ite1;

   ite=vec2.begin()

   ite1=vec2.end();

    vector<int>vec3(ite,ite1);

     for(int i=0;i<5;i++)

    {

        cout<<vec3[i];

    }


三.vector容器的容量

1.初始容量 

 初始化几个,那么容量就是几个,无参数就是0;

 这点和string容器不一样,string容器,系统会至少分配15个容量。

而当空间不够用时候,容量增加现有容量的一半。

VS版本例子: 

vector<int>vec;

cout<<vec.capactity()<<endl;

vector<int>vec1(5);

cout<<vec.capacity()<<endl;

vec1.push_back(1);//5+5/2==7

cout<<vec1.capacity()<<endl;

vec1.push_back(1);

vec1.push_back(1);  //7+7/2==10

cout<<vec1.capacity()<<endl;


2.reserve()修改容量

 只能修改变大,不能变小;

 vector<int>vec(5);

 vec.reserve(10)//此时容量为10

 注意:重新分配容量后,迭代器也会失效


3.size()元素个数,resize()重新设置元素个数


4.vector容器的输出

方式一:输出全部分为两种(循环,for_each)

vector<int>vec;

for(int i=0;i<10;i++)

{

  vec.push_back(i);

} //往向量中添加0~9

vector<int>::iterator ite=vec.begin;

for(ite;ite!=vec.end();ite++)

{

   cout<<*ite<<endl;//输出0~9

}


for_each(vec.begin(),vec.end(),fun);//其中fun函数自己需要定义,fun参数需要和vec中的函数类型一样

方式二:输出单个元素(at(),[]下标运算,back(), begin() )


 5.vector()的增删改查

    增加: insert() ;   尾部添加:void push_back();

    删除:    erase() ;   尾部删除: void pop_back() 等价于vec.erase(vec.end()) ;void clear()全部删除

    修改: 利用输出的形式进行修改

                赋值函数

    交换: swap()

  

四.涉及的两个算法

算法一:排序算法

sort(vec.begin(),vec.end());//默认从小到大排序

算法二:遍历算法

for_each(vec.begin(),vec.end(),fun);

算法三:乱序算法

#include<ctime>    //c语言中是time.h

#include<algorithm>

srand((unsigned int)time(0));

randon_shuffle(vec.begin(),vec.end(),fun);


备注: array表示数组(固定数组)不做介绍

            valarrary这个容器装了一大堆容器封装,涉及到很多数学知识,不做介绍


   

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值