C++ STL常用容器及使用方法
C++的STL库常用数据结构及方法
1. vector可变数组
1.1 引入
1 |
|
1.2 创建
- 创建空vector
1 |
|
- 创建一定长度的vector
1 |
|
- 创建一定长度的vector,并且给所有元素赋初始值
1 |
|
- 创建一个指定元素值的vector
1 |
|
- 使用迭代器创建vector
1 |
|
1.3 方法
-
向尾部添加元素push_back, emplace_back
push_back()会先创建一个临时对象,然后复制或移动到容器尾部。emplace_back是C++ 11新引入的方法,直接在容器尾部创建这个对象。
1
2vct.push_back(1);
vct.emplace_back(1); -
向某一位置插入元素insert,emplace
同理,emplace是C++ 11新特性
1
2
3vct.insert(pos, val);//在pos位置插入元素val
vct.insert(vct.begin()+2, 1);//在下标为2处插入1
vct.insert(vct.begin()+2, 3, 1);//在下标为2处插入3个1 -
删除尾部元素pop_back
1
vct.pop_back();
-
删除指定位置的元素erase
1
2vct.erase(vct.begin()+2);//删除下标为2的元素
vct.erase(vct.begin()+2, vct.begin()+5);//删除下标为2到4的元素 -
清空vector
1
vct.clear();
2. stack栈
2.1 引入
1 |
|
2.2 构造stack对象
1 |
|
2.3 方法
-
入栈push
1
2st.push(1);
st.emplace(1); -
出栈pop
1
st.pop();//void函数,仅出栈操作
-
获取栈顶top
1
int a = st.top();
-
判空empty
1
2
3if(!st.empty()){
...
}
3. 队列queue
3.1 引入
1 |
|
3.2 构造queue对象
1 |
|
3.3 方法
-
入队push,emplace
1
2q.push(1);
q.emplace(1); -
出队pop
1
q.pop();
-
获取队头、队尾元素front,back
1
2int a = q.front();
a = q.back();
4. 双向队列deque
4.1 引入
1 |
|
4.2 构造deque对象
1 |
|
4.3 方法
-
前端插入元素push_front,emplace_front
1
2dq.push_front(1);
dq.emplace_front(1); -
后端插入元素push_back,emplace_back
1
2dq.push_back(1);
dq.emplace_back(1); -
前后端出队pop_front,pop_back
1
2dq.pop_front();
dq.pop_back(); -
访问元素front,back
1
2int a = dq.front();
int b = dq.back(); -
清空clear
1
dq.clear();
5. 集合set
5.1 引入
1 |
|
5.2 构造set
1 |
|
5.3 方法
-
插入元素insert,emplace
1
2s.insert(1);
s.emplace(1); -
删除元素erase
1
s.erase(1);//删除值为1的元素
-
查找元素count,find
1
2
3
4
5
6if(s.count(1)){//若存在则返回1,否则返回0
...
}
if(s.find(1) != s.end()){//若存在则返回迭代器,否则返回end()
...
} -
清空clear
1
s.clear();
6. 键值映射map
6.1 引入
1 |
|
6.2 构造
1 |
|
6.3 方法
-
插入元素insert, emplace
1
2mp.insert(pair<char, int>('a', 1));
mp.emplace('a', 1);
C++ STL常用容器及使用方法
http://example.com/2024/03/24/CppSTL/