STL库(一)--Vector

Last updated on July 8, 2025 pm

Vector(动态数组)

头文件

#include<vector>

初始化

  1. 定义一个vector 未初始化 输出 0
vector<int> a;
  1. 定义一个长度为3 的vector 未初始化 输出 0
vector<int> a(3);
  1. 定义一个长度为10 的vector 每个数赋值为 3
vector<int> a(10,3);
  1. 将向量b中从下标 0 1 2(共三个)的元素赋值给a ,a 的类型为int型
vector<int> a(b.begin(),b.begin+3);
  1. 从数组中获得初始值
int b[7] = {1,2,3,4,5,6,7}
vector<int> a(b,b+7);
  1. 输出
for(auto x:a)
{
	cout << x << " ";
}

size()

a.size()    // 返回元素个数

resize()

a.resize()    // 改变大小

empty()

a.empty();    
// 判断a是否为空,空则返回true,非空则返回false

front() 和 back()

a.front();
// 返回a的第一个元素,当且仅当a存在
a.back();
// 返回vector的最后一个数

倍增思想

C++ 系统为某一程序分配空间的所需时间,与空间大小无关,与申请次数有关如果申请一个空间为1000 和 空间 为1 申请1000 次的所需时间差别是很大的,申请次数越多,越耗时间。

clear()

a.clear();
//清空a中的元素

支持比较运算

比较操作 == , != , < , > , <= , >=

int main()
{
    //支持比较运算
    vector<int> a(4,3),b(3,4);
    // a: 3 3 3 3  		b: 4 4 4 
    //比较原理   字典序 (根据最前面哪个判断,如果一样就往后比较)
    if(a < b)
        cout << "a < b" << endl;
        
}

push_back() 和 pop_back()

a.push_back(5);
// 在a的最后一个向量后插入一个元素,其值为5
a.pop_back();
//删除a向量的最后一个元素

begin()和end()

a.begin();  // vector的第0个数;
a.end(); // vector的最后一个数的后面一个数
通常与for循环结合使用

遍历vector的三种方法

nt main()
{
    vector<int> a;
    for(int i=0;i<10;i++)
    {
        a.push_back(i);
    }
    // 三种遍历vector的方法
    //第一种
    for(int i=0;i<a.size();i++)
    {
        cout << a[i] << " " ;
    }
    cout << endl;
    // 第二种
    for(auto i=a.begin();i!= a.end();i++)
    {
        cout << *i << ' ';
    }
    cout << endl;
    // 第三种    C++11 新语法
    for(auto x:a)
    {
        cour << x << " ";
    }
    cout << endl;
    return 0;
}

结合算法erase() reverse()

#include<iostream>
#include<vector>
#include<algorithm>
int main()
{
    a.erase(b);  //从a中删除迭代器p指定的元素,p必须只想c中的一个真实元素,不能是最后一个元素 end()
    a.erase(b,e); // 从a中删除迭代器对b和e所表示的范围中的元素,返回e
    
    vector<int> a={1,2,3,4,5};
    reverse(a.begin(),a.end()); //a的值为 5,4,3,2,1 倒置
        
}

STL库(一)--Vector
https://blog.lixey.top/posts/afe38b32/
Author
Lixiney
Posted on
September 2, 2024
Licensed under