c++vector动态数组应用及函数(笔记)

vector动态数组应用及函数

vector动态数组是c++中一个常用的容器 它相比于c语言中的数组 多了很多功能
方便了使用

vector头文件
使用vector 首先要添加vector头文件

#include <vector>

vector的创建(1)
可以创建各种类型的vector动态数组 :整形,浮点型,字符型,对象类,字符串型都可以
创建方法也是类似的


    vector<int> ivec; //保存int类型的动态数组
    vector<string> svec; // 保存string类型的动态数组
    vector<char> cvec;  //保存char类型的动态数组
    vector<double> dvec;  //保存double类型的动态数组

vector的创建(2)
当然 如此牛批 强大的vector 也可以在进行创建的同时 做到一些牛批强大的初始化工作
比如

    vector<int> ivec(10,1); //初始化为存有10个1的动态数组
    vector<string> svec(10,"hi"); //当然这就是 10个string类型的 hi  
    vector<char> cvec(100,'a');  //同理 100个'a'
    vector<double> dvec(10,1.01);   //初始化为含有10个1.01的double类型动态数组

vector的遍历方法
vector支持下标和迭代器遍历
代码如下:

    for (vector<int>::size_type i = 0; i != a.size();i++)
        cout << a[i] << " ";
    vector<int>::iterator it; //it为动态数组的迭代器
    for (it = a.begin(); it != a.end();it++)
        cout << *it << " ";  //迭代器可理解为容器的指针 输出就要加*
//两种遍历方法结果相同

vector常用函数
那先创建一个动态数组吧

    vector<int> a(10, 2); //容器里初始化为10个2;
  1. a.push_back( x ) ; 将元素x添加到动态数组尾部

  2. a.pop_back(); 将a动态数组中的最后一个元素删除

  3. a.begin(); 我也不太懂感觉返回的是a的第一个元素的迭代器

  4. a.end(); 返回的是指向a的最后一个元素的后面的迭代器

  5. a.size(); 返回a的长度 即元素个数

  6. a.front(); 返回a中第一个元素

  7. *a.back();*返回a中最后一个元素

  8. a.insert(迭代器,待插入元素) ; 在指定位置的前面添加元素
    a.insert(迭代器,m,n) ; 在指定位置的前面添加 [m,n) 区间的所有元素

  9. a.erase(it) ; 删除指定位置的元素 it是a的迭代器类型
    如:
    a.erase(a.begin()+1); 将a中下标为1的元素删除
    (ps:vector存放元素从0开始 所以上式也可以理解为删除第二个元素
    也支持删除指定范围内的元素
    a.erase(a.begin()+2,a.begin()+6) ; 删除下标范围 [2,6) 的元素
    (ps:碎碎念 注意范围 )
    a.erase(a.begin()+2,a.end()) ; 这就是把下标为2的元素开始到末尾的所有元素删除

  10. a.empty(); 判断容器是否为空 若为空返回true

  11. a.swap(b); 将a,b两数组中元素整体交换

那 函数介绍完了 展示一下代码应用

#include <vector>
#include <algorithm>
#include <iostream>
 
 //vector动态数组容器:向量
 bool rule(const int &a,const int &b)
 {
     return a > b;
 }   //自定义排序规则从大到小排列
using namespace std;
int main()
{
    vector<int> ivec(10,0); //保存int类型的动态数组
    vector<string> svec(10,"hi"); //10个hi  
    vector<char> cvec(100,'a');
    vector<double> dvec(10,1.01);
    ivec.push_back(1);
    ivec.push_back(2);
    ivec.push_back(10);
    cout << "int vector:" << ivec.size() << endl;
    for (auto it = ivec.begin(); it != ivec.end();it++)
    {
        cout << *it << " ";
    }
        cout << endl;
    cout << endl;
    vector<int> a(10, 2); //容器里初始化为10个2;
    a.push_back(15);
    a.push_back(2);
    cout << "a.vector:" << a.size() << endl;
    for (vector<int>::size_type i = 0; i != a.size();i++)
        cout << a[i] << " ";
    cout << endl;
 
//erase用法
    a.erase(a.begin()+2); //删除第三个元素
    a.erase(a.begin() + 6, a.end()); //删除下标6到最后一个元素
 
    //insert用法
    a.insert(a.begin() + 2, 500); //在第三个元素前插入500
    for (vector<int>::size_type i = 0; i != a.size();i++)
        cout << a[i] << " ";

    cout << endl << endl;

    vector<int>::iterator m;
    //sort函数用法
    sort(a.begin(), a.end()); //默认从小到大排序
    for (auto it = a.begin(); it != a.end();it++)
        cout << *it << " ";
    cout << endl;
    cout << endl;
    sort(a.begin(), a.end(),rule);
    for (auto it = a.begin(); it != a.end();it++)
        cout << *it << " ";
    cout << endl;
    cout << endl;
 
    //clear用法
    a.clear(); //清空所有元素
 
//若容器为空 empty返回值为真
    if(a.empty())
        cout << "empty over" << endl;
    cout << endl;
    cin.clear();
    cin.sync();
    cin.get();
    return 0;
}
  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值