STL学习笔记--数组(vector)

本文详细介绍了STL中的vector容器,包括其定义、构造函数、容量、大小等属性,以及插入、删除、修改等操作。重点讨论了vector的高效尾部添加与中间插入的区别,并提到了迭代器在容量改变时可能失效的问题。此外,还涵盖了向量的比较运算符重载和两个常用的算法:遍历与排序。
摘要由CSDN通过智能技术生成

  • 数组不可越界操作
  • 函数操作多为迭代器,与string有用下表不同
    头文件:vector

1.定义

1. 定义向量的对象

关键字<参数列表> 变量名
关键字:容器名字–类名
参数列表:容器的数据类型
2. 容器的数据类型
基本数据类型:eg:int、char……(本质和string一样)
结构体
指针
对象:普通类对象(同结构体)、其他容器对象

(string没有参数列表:string是针对字符串的,转定义后看到string是重命名,本质是有参数列表的)

void STLDefine(){
    //基本数据结构
    vector<int> vec;
    vector<char> str; //相当于string,string专门放char,对字符操作功能更多更强

    //结构体
    struct STU{
        int age;
    };
    vector<STU> stu1;
    vector<struct STU> stu2;

    //指针
    vector<int*> vec1;

    //对象
    vector<string> str1;//每一个都是字符串==字符串数组
}

2.构造函数

vector();
vector( size_type num, const TYPE &val );
vector( const vector &from ); 拷贝构造,元素同类型
vector( input_iterator start, input_iterator end ); 迭代器初始化

void STLConstructor(){
    vector<int> vec; //空容器
    //cout<<vec[0];   //空容器输出崩溃

    vector<int> vec1(5);
    for(int i=0;i<5;i++) cout<<vec1[i]<<endl;   //00000 初始化为0
    //cout<<vec1[6]<<endl;    //越界输出崩溃

    vector<char> vec2(5,'a');
    for(int i=0;i<5;i++) cout<<vec2[i]<<endl;

    vector<int> vec3(vec1);	//参数类型要相同不然会崩溃
    for(int i=0;i<5;i++) cout<<vec2[i]<<endl;

    vector<int> vec4(5,1);
    vector<int>::iterator ite=vec4.begin();//定义了向量的迭代器,返回迭代器头
    vector<int>::iterator ite1=vec4.end();   //ite 为元素类型的指针(int*、char*、结构体*)
    vector<int> vec5(it
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值