向量vector基本操作及用法

1.向量vector基本操作及用法

1.1 vector简介

vector属于STL中的一种自定义数据类型。是可以装载各种数据类型的动态数组(动态分配内存),具有连续的、顺序的储存结构。使用vector要加上<vector>头文件

1.2 vector常用情形

vector的数据储存在堆空间中,不会爆栈。一般来说vector可以替换掉普通数组。有些情况下普通数组无法解决,可以使用vector。例如数据量较大的矩阵

  • 用普通数组int a[10000005][10000005],这样会导致内存浪费
  • 用vector就可以解决这个问题vector<vector<int>> a(n+10, vector<int> (m + 10))

1.3vector基本用法

1.3.1vector构造

vector<类型>函数名称(长度,初值)

vector<int> a;
vector<int> b(100);
vector<int> c(100,1);
//二维vector
vector<vector<int>> mat(100,vector<int>(200,1));//构造100行200列初值为1的二维数组

1.3.2输入、输出

直接用cin、cout即可

    //.size()获取当前vector长度
    vector<int> arr(5);
    for(int i = 1; i < arr.size(); i++)
        cin >> arr[i];
    for(int i = 1; i < arr.size(); i++)
        cout << arr[i] <<" ";

1.3.3尾删、尾接

vector尾部接上或者删除一个元素,长度加一或者减一

    vector<int> arr(5,1);
    arr.push_back(6);
    arr.push_back(66);
    for(int i = 1; i < arr.size(); i++)
        cout << arr[i] << " ";
    cout << endl;
    arr.pop_back();
    for(int i = 1; i < arr.size();i++)
        cout << arr[i] << " ";
    cout << endl;

1.3.4判空、清空

判空.empty(),如果为空返true,不为空返回false(返回布尔变量)

清空.cleal(),清空当前vector

    if(arr.empty())
        cout << "yes " << endl;
    else
        cout << "no " << endl;

    arr.clear();
    
    for(int i = 1; i < arr.size(); i++)
        cout << arr[i] << " ";
    cout << endl;
    if(arr.empty())
        cout << "yes" << endl;
    else
        cout << "no " << endl;

1.3.5修改长度

修改vector长度.resize(新长度,赋初值)。如果长度缩短,则删除多余的值。如果长度扩大,且指定了默认值(不指定默认为0),则新元素均为默认值(旧元素不变)

    cout << arr.size() << endl;
    arr.resize(10,1);
    cout << arr.size() << endl;
    for(int i = 1; i < arr.size(); i++)
        cout << arr[i] <<" ";

1.4vector注意事项

当心.size()溢出:长度溢出后会直接变为0

vector<int> a(100005);
long long a = a.size * a.size();

最好提前指定长度

vector在分配内存时会有额外的时间开销,如果题中已经给出长度,最好在构建函数时直接指定长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值