STL–第一章 vector动态数组

头文件

#include <vector>

初始化

#include<iostream>
#include<vector>
using namespace std;
int main () {
   
	//几种初始化的方法
    vector<int> a;//定义一个vector 未初始化 输出》 0
    
    vector<int> a(3);//定义一个长度为3的vector 未初始化 输出》0 0 0
    
    vector<int> a(10, 3); //定义一个长度为10,且每个数赋值为3
    
	//将向量b中从下标0 1 2(共三个)的元素赋值给a,a的类型为int型
	//它的初始化不和数组一样 
	vector<int>a(b.begin(),b.begin+3);

	//从数组中获得初值
	int b[7]={
   1,2,3,4,5,6,7};
	vector<int> a(b,b+7;
	
    for(auto x : a) {
   //遍历输出 
        cout << x << " ";
    }
    return 0;
}

size()

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

resize()

a.resize();//改变大小

empty()

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

front()和back()

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

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) {
   
        puts("a < b"); 
    } 
    return 0;
}

程序运行后输出:a<b

push_back()和pop_back()

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

begin()和end()

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

遍历vector的三种方法

int 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) {
   
        cout << x << ' ';
    }
    cout << endl;  
    return 0;
}

结合算法erase(),reverse()

a.erase(p);//从a中删除迭代器p指定的元素,p必须指向a中的一个真实元素,不能是最后一个元素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倒置