STL之Vector、Set、栈、队列

这篇博客介绍了C++ STL中的四个重要组件:vector、set、栈和队列。详细讲解了vector的简介、常用操作及算法,set的基本概念、优势和操作,以及栈和队列在数据结构中的应用。博客旨在帮助初学者理解STL的这些基本容器的使用和原理。
摘要由CSDN通过智能技术生成

       互联网行业的小白,写博客的目的是为了记录自己的学习过程、对自己学习中所犯的错误做一个总结。由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!

1 STL之vector

1.1 vector简介

vector是C++提供的一个容器,它是一个能够存放任意类型的动态数组,可以随时增加和压缩数据。

使用vector时需要注意以下几点:

  • 如果要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低;
  • vector作为函数的参数或者返回值时,需要注意它的写法` double Distance(vector&a, vector&b) 其中的“&”绝对不能少``

1.2 vector常用操作

1. 引入头文件

#include <vector>

2. 创建向量

vector<int> vec;

3. 向量尾部插入元素

vec.push_back(item);

4. 向量尾部弹出元素

vec.pop_back();

5. 访问向量元素

  • 下标访问
for(int i = 0; i < vec.size(); i++) {
   
    cout << vec[i] << endl;
}
  • 迭代器访问
vector<int>::iterator it;
for(it = vec.begin(); it != vec.end(); it++) {
   
    cout << *it << endl;
}

6. 插入元素

vec.insert(vec.begin() + i, item);  //在向量的第i+1的位置插入元素item

7. 删除元素

vec.erase(vec.begin() + i);  //删除向量的第i+1个元素

8. 向量的大小

vec.size();

9. 其他

vec.front();  //返回向量的第一个元素
vec.back();   //返回向量的最后一个元素
vec.empty();  //检测向量是否为空
vec.clear();  //清空向量

1.3 vector常用算法

以下算法使用时都需要包含头文件

#include <algorithm>

1. 翻转元素

//将向量中的元素翻转,即逆序排列
reverse(vec.begin(), vec.end());        

2. 排序

//将元素以升序排列(由小到大)
sort(vec.begin(), vec.end());        
//定义排序比较函数
bool compare(const int &a, const int &b) {
   
    return a > b;
}
//将元素以降序排列(由大到小)
sort(vec.begin(), vec.end(), compare);        

3. 查找

//查找向量中的值为10的元素
find(vec.begin(), vec.end(), 10);        

4. 复制

//把vec向量中所有元素全部复制到vec_1向量中,从vec_1.begin() + 1 的位置开始复制,覆盖掉原有的元素
copy(vec.begin(), vec.end(), vec_1.begin() + 1);        

2 STL之set

2.1 Set简介

Set是STL中的一个容器,特点是其中包含

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STL(标准模板库)中常用的容器有:vector、list、deque、set、map、unordered_set、unordered_map等。 vector容器的末尾插入函数是push_back()。它会在vector容器的末尾添加一个元素,并将vector容器的大小增加1。其语法如下: ``` void push_back (const value_type& val); ``` 其中,val为要插入的元素的值,value_type为vector容器存储元素的类型。 ### 回答2: STL(Standard Template Library)是C++标准库中的一个重要组成部分,提供了各种容器和算法供程序员使用,以便更高效地实现各种功能。 STL中常用的容器包括:vector、list、deque、stack、queue、set和map等。 其中,vector是一种动态数组容器,可以在末尾插入新的元素。vector容器的末尾插入函数是push_back()。使用push_back()函数可以将一个元素插入到vector容器的末尾,并保持原有元素的顺序不变。 下面是一个使用vector容器的末尾插入函数的例子: ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec; vec.push_back(1); // 在末尾插入元素1 vec.push_back(2); // 在末尾插入元素2 vec.push_back(3); // 在末尾插入元素3 // 输出vector容器中的元素 for (auto i : vec) { std::cout << i << " "; } return 0; } ``` 以上代码将输出:1 2 3,即通过push_back()函数可以将元素逐个插入到vector容器的末尾,并按照插入的顺序进行输出。 ### 回答3: STL(标准模板库)是C++中的一个重要组成部分,提供了丰富的容器(container),其中包括以下几种常用容器: 1. vector(向量):以动态数组的形式存储数据,可动态调整大小。 2. list(链表):使用双向链表实现,支持快速插入和删除操作。 3. deque(双端队列):底层由多个可变大小的数组块构成,支持在两端高效插入和删除操作。 4. stack():后进先出的数据结构,基于deque实现。 5. queue(队列):先进先出的数据结构,基于deque实现。 6. set(集合):基于红黑树实现的有序集合,不允许重复元素。 7. map(映射):基于红黑树实现的有序映射,存储键值对,不允许重复键。 8. unordered_set(无序集合):基于哈希表实现的无序集合,不允许重复元素。 9. unordered_map(无序映射):基于哈希表实现的无序映射,存储键值对,不允许重复键。 其中,vector容器的末尾插入函数是push_back()。该函数用于将元素插入到vector容器的末尾,扩展容器的大小,并将新元素的副本添加到容器中。举个例子,若使用vector<int> vec;来定义一个int类型的vector容器,通过vec.push_back(10);可以将整数10插入到容器的末尾。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值