c++中stack、queue、vector的用法

简介: c++中stack、queue、vector的用法

一、栈(stack)


  1. 引入头文件

#include<stack>


  1. 常用的方法
  • empty() 堆栈为空则返回真
  • pop() 移除栈顶元素
  • push() 在栈顶增加元素
  • size() 返回栈中元素数目
  • top() 返回栈顶元素


3.实例代码

#include<iostream>
#include<stack>
using namespace std;
int main(){
    //创建栈 s
    stack<int> s;
    //将元素压入栈
    for(int i=0;i<10;i++){
        s.push(i);
    }
//    if(!s.empty()){
//        cout<<"栈s不是空的"<<endl;
//    }
    cout<<"栈s中元素的个数为:"<<s.size()<<endl;
    while(!s.empty()){
        cout<<" "<<s.top();//获取栈顶元素
        s.pop();//弹出栈顶元素
    }
    cout<<endl;
    if(s.empty()){
        cout<<"栈s现在为空"<<endl;
    }
    return 0;
}


  1. 运行结果

    1.png
    运行结果


二、队列(queue)


  1. 引入头文件

#include<queue>


  1. 常用方法
  • empty() 判断队列是否为空,返回类型为bool
  • size() 返回队列中元素的个数
  • front() 返回队列队首元素
  • back() 返回队列队尾元素
  • push(ele) 将元素ele插入到队尾
  • pop 队首元素出队


  1. 实例代码


#include<iostream>
#include<queue>
using namespace std;
int main(){
    int ele,num,last;
    queue<int> q;
    for(int i=0;i<10;i++){
        q.push(i);
    }
    if(!q.empty()){
        cout<<"队列不是空的"<<endl;
    }
    num=q.size();
    cout<<"队列q的长度为:"<<num<<endl;
    last=q.back();
    cout<<"队列q最后一个元素:"<<last<<endl;
    for(int j=0;j<q.size();j++){
        ele=q.front();
        cout<<ele<<" ";
        q.pop();
    }
    cout<<endl;
    if(q.empty()){
        cout<<"队列是空的"<<endl;
    }
    return 0;
}


  1. 运行结果


2.png

运行结果


三、向量(vector)


  1. 引入头文件

#include<vector>


  1. 常用方法
  • c.clear()         移除容器中所有数据。
  • c.empty()         判断容器是否为空。
  • c.erase(pos)        删除pos位置的数据
  • c.erase(beg,end) 删除[beg,end)区间的数据
  • c.front()         传回第一个数据。
  • c.insert(pos,elem)  在pos位置插入一个elem拷贝
  • c.pop_back()     删除最后一个数据。
  • c.push_back(elem) 在尾部加入一个数据。
  • c.resize(num)     重新设置该容器的大小
  • c.size()         回容器中实际数据的个数。
  • c.begin()           返回指向容器第一个元素的迭代器
  • c.end()             返回指向容器最后一个元素的迭代器


  1. 代码实例

#include<iostream>
#include<vector>
using namespace std;
int main(){
    //向向量v中添加元素
    vector<int> v;
    for(int i=0;i<10;i++){
        v.push_back(i);
    }
    //从向量v中读取数据
    for(int i=0;i<v.size();i++){
        cout<<" "<<v[i];
    }
    cout<<endl;
    //使用迭代器遍历数据 迭代器相当于指针
    cout<<"使用迭代器获取数据"<<endl;
    vector<int>::iterator iter;
    for( iter = v.begin(); iter != v.end(); iter++ )
    {
      cout<<" "<< *iter;
    }
    cout<<endl;
    //删除数据
    for(vector<int>::iterator it=v.begin();it!=v.end();){
        v.erase(it);
    }
    if(v.empty()){
        cout<<"向量v为空"<<endl;
    }
    return 0;
}


  1. 运行结果

3.png

运行结果

相关文章
|
24天前
|
存储 安全 编译器
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
84 0
|
2月前
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
37 3
【C++】map、set基本用法
|
2月前
|
存储 编译器 C语言
【c++丨STL】vector的使用
本文介绍了C++ STL中的`vector`容器,包括其基本概念、主要接口及其使用方法。`vector`是一种动态数组,能够根据需要自动调整大小,提供了丰富的操作接口,如增删查改等。文章详细解释了`vector`的构造函数、赋值运算符、容量接口、迭代器接口、元素访问接口以及一些常用的增删操作函数。最后,还展示了如何使用`vector`创建字符串数组,体现了`vector`在实际编程中的灵活性和实用性。
80 4
|
24天前
|
存储 对象存储 C++
C++ 中 std::array<int, array_size> 与 std::vector<int> 的深入对比
本文深入对比了 C++ 标准库中的 `std::array` 和 `std::vector`,从内存管理、性能、功能特性、使用场景等方面详细分析了两者的差异。`std::array` 适合固定大小的数据和高性能需求,而 `std::vector` 则提供了动态调整大小的灵活性,适用于数据量不确定或需要频繁操作的场景。选择合适的容器可以提高代码的效率和可靠性。
52 0
|
24天前
|
C++
第十三问:C++中静态变量的用法有哪些?
本文介绍了 C++ 中静态变量和函数的用法及原理。静态变量包括函数内的静态局部变量和类中的静态成员变量,前者在函数调用间保持值,后者属于类而非对象。静态函数不能访问非静态成员,但可以通过类名直接调用。静态链接使变量或函数仅在定义文件内可见,避免命名冲突。
54 0
|
28天前
|
存储 编译器 C语言
【c++丨STL】vector模拟实现
本文深入探讨了 `vector` 的底层实现原理,并尝试模拟实现其结构及常用接口。首先介绍了 `vector` 的底层是动态顺序表,使用三个迭代器(指针)来维护数组,分别为 `start`、`finish` 和 `end_of_storage`。接着详细讲解了如何实现 `vector` 的各种构造函数、析构函数、容量接口、迭代器接口、插入和删除操作等。最后提供了完整的模拟实现代码,帮助读者更好地理解和掌握 `vector` 的实现细节。
38 0
|
3月前
|
存储 算法 调度
【C++打怪之路Lv11】-- stack、queue和优先级队列
【C++打怪之路Lv11】-- stack、queue和优先级队列
51 1
|
3月前
|
存储 C++ 索引
【C++打怪之路Lv9】-- vector
【C++打怪之路Lv9】-- vector
29 1
|
2天前
|
C++ 芯片
【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
声明一个简单的Computer类,含有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,以及两个公有成员函数run、stop。只能在类的内部访问。这是一种数据隐藏的机制,用于保护类的数据不被外部随意修改。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。成员可以在派生类(继承该类的子类)中访问。成员,在类的外部不能直接访问。可以在类的外部直接访问。为了完成本关任务,你需要掌握。
33 18
|
2天前
|
存储 编译器 数据安全/隐私保护
【C++面向对象——类与对象】CPU类(头歌实践教学平台习题)【合集】
声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,以及两个公有成员函数run、stop。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。​ 相关知识 类的声明和使用。 类的声明和对象的声明。 构造函数和析构函数的执行。 一、类的声明和使用 1.类的声明基础 在C++中,类是创建对象的蓝图。类的声明定义了类的成员,包括数据成员(变量)和成员函数(方法)。一个简单的类声明示例如下: classMyClass{ public: int
30 13