STL有序容器简介

迭代器

大多数STLSTL都有迭代器,通常的如果Test为STLSTL容器,则

1
Test.begin()

指向Test的第一个元素,

1
Test.end()

指向Test的最后一个元素的后一个元素

Array-数组

用法

使用前需要先引入array库

通常使用

1
array<变量类型,数组大小>

来定义一个array数组,用法和普通数组一样,但是据说更加安全

感觉功能也比普通数组更多

示例

输入nn个数,倒序输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<array>
using namespace std;
array<int,100> Test;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>Test[i];
}
for(int i=n;i>=1;i--){
cout<<Test[i]<<'\n';
}
return;
}

Vector-双端数组

用法

使用vector的时候需要引入vector库

通常使用

1
vector<变量类型>

来定义一个vector容器

可以在定义时就开空间,如:

1
vector<int> Test(10);

可以动态push元素,新加入的元素将会加入到数组尾部

1
Test.push_pack(变量);

也可以直接插入到序列中间,但复杂度较高

1
Test.insert(迭代器,元素)

元素将插入到迭代器所指的元素的前面

示例

输入nn个数,倒序输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
#include<vector>
using namespace std;
vector<int> Test;
int main(){
int tmp,n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>tmp;
Test.push_back(tmp);
}
for(auto it=Test.rbegin();it!=Test.rend();it++){//这里使用了反向迭代器
cout<<(*it)<<'\n';
}
return 0;
}

Deque-双端队列