C++中的各种容器的使用方法汇总

C++中的各种容器的使用方法汇总

本攻略介绍了C++中的常用容器的使用方法,包括:数组,向量,列表,栈,队列,映射和集合等。

数组

数组是C++中最基本的容器,它存储固定大小的相同类型元素。数组的大小在声明时就已经指定,而且不能随意改变。

以下是数组的基本定义和初始化方法:

int arr[5];    //定义一个数组,包含五个整数元素
int arr[5] = {1, 2, 3, 4, 5};    //定义一个包含五个整数元素的数组,并初始化元素

向量

向量是一个动态数组,允许在运行时添加、删除元素。为了使用向量,需要包含头文件<vector>

以下是向量的基本定义和初始化方法:

vector<int> vec;    //定义一个空向量
vector<int> vec(5);    //定义一个包含五个元素的向量
vector<int> vec{1, 2, 3, 4, 5};    //定义一个包含五个元素的向量,并初始化元素

向向量添加元素的方法如下:

vec.push_back(10);    //向向量中添加一个整数10

列表

列表是一个双向链表,允许在任何位置添加和删除元素。为了使用列表,需要包含头文件<list>

以下是列表的基本定义和初始化方法:

list<int> lst;    //定义一个空列表
list<int> lst{1, 2, 3, 4, 5};    //定义一个包含五个元素的列表,并初始化元素

向列表添加元素的方法如下:

lst.push_back(10);    //向列表尾部添加一个整数10
lst.push_front(9);    //向列表头部添加一个整数9

栈是一个后进先出(LIFO)的容器。为了使用栈,需要包含头文件<stack>

以下是栈的基本定义和初始化方法:

stack<int> stk;    //定义一个空栈

向栈添加和删除元素的方法如下:

//向栈中添加元素
stk.push(10);    
stk.push(20);   

//从栈中删除元素
stk.pop();    

队列

队列是一个先进先出(FIFO)的容器。为了使用队列,需要包含头文件<queue>

以下是队列的基本定义和初始化方法:

queue<int> que;    //定义一个空队列

向队列添加和删除元素的方法如下:

//向队列中添加元素
que.push(10);    
que.push(20);   

//从队列中删除元素
que.pop();    

映射

映射是一种关联数组,将一个键与一个值相关联。为了使用映射,需要包含头文件<map>

以下是映射的基本定义和初始化方法:

map<string, int> mp;    //定义一个空映射

向映射添加、查找和删除元素的方法如下:

//向映射中添加元素
mp["apple"] = 10;
mp["orange"] = 20;

//从映射中查找元素
if (mp.find("apple") != mp.end())
{
    cout << "Found apple: " << mp["apple"] << endl;
}

//从映射中删除元素
mp.erase("apple");

集合

集合是一组唯一的元素。集合不允许重复元素。为了使用集合,需要包含头文件<set>

以下是集合的基本定义和初始化方法:

set<int> st;    //定义一个空集合

向集合添加、查找和删除元素的方法如下:

//向集合中添加元素
st.insert(10);
st.insert(20);

//从集合中查找元素
if (st.find(10) != st.end())
{
    cout << "Found 10" << endl;
}

//从集合中删除元素
st.erase(10);

示例

向量示例

以下示例展示了如何使用向量实现一个可动态添加和删除元素的整数数组:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    //定义一个向量,用于存储整数
    vector<int> myvector;

    //向向量中添加元素
    for (int i=1; i<=5; i++) myvector.push_back(i*10);

    //输出向量中的元素
    cout << "myvector contains:";
    for (auto it = myvector.begin(); it != myvector.end(); ++it)
        cout << ' ' << *it;
    cout << '\n';

    //从向量中删除最后一个元素
    myvector.pop_back();

    //输出删除后向量中的元素
    cout << "myvector contains:";
    for (auto it = myvector.begin(); it != myvector.end(); ++it)
        cout << ' ' << *it;
    cout << '\n';

    return 0;
}

输出结果为:

myvector contains: 10 20 30 40 50
myvector contains: 10 20 30 40

映射示例

以下示例展示了如何使用映射实现一个字符串计数程序,该程序接受用户输入的字符串,并计算每个单词出现的次数:

#include <iostream>
#include <map>
#include <string>
#include <cctype>

using namespace std;

int main()
{
    //定义一个映射,用于存储单词出现的次数
    map<string,int> wordcount;

    //接受用户输入的字符串
    string line;
    getline(cin, line);

    //遍历字符串中的每个单词
    string word;
    for (auto c : line)
    {
        if (isalpha(c)) //遇到字母,将其添加到当前单词中
        {
            word += tolower(c);
        }
        else if (word != "") //遇到非字母字符,并且当前单词不为空,将其添加到映射中
        {
            if (wordcount.find(word) == wordcount.end())
            {
                wordcount[word] = 1;
            }
            else
            {
                wordcount[word] += 1;
            }
            word = "";
        }
    }
    //处理字符串末尾的单词
    if (wordcount.find(word) == wordcount.end())
    {
        wordcount[word] = 1;
    }
    else
    {
        wordcount[word] += 1;
    }

    //输出单词计数结果
    for (auto it : wordcount)
    {
        cout << it.first << " : " << it.second << endl;
    }

    return 0;
}

假设用户输入的字符串是hello world how are you world,则输出结果为:

are : 1
hello : 1
how : 1
world : 2
you : 1

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中的各种容器的使用方法汇总 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • C语言零基础讲解指针和数组

    下面是关于《C语言零基础讲解指针和数组》的详细攻略。 学前准备 在学习本篇攻略之前,你需要具备以下知识和工具: C语言基础语法和编程环境 一个C语言编译器(推荐使用gcc) 什么是指针? C语言中的指针是一种非常重要的数据类型,它用来存储变量的内存地址。指针变量本身的值是一个地址值,它指向该地址上存储的值。 在C语言中,通过指针可以实现对变量的间接访问,从而…

    other 2023年6月25日
    00
  • 嵌套repeater示例分享

    嵌套repeater示例分享攻略 在这个攻略中,我将详细讲解如何使用嵌套repeater来创建复杂的重复模式。嵌套repeater是一种在重复模式中嵌套另一个重复模式的技术,可以帮助我们更灵活地控制重复的次数和顺序。 步骤一:了解嵌套repeater的基本概念 嵌套repeater是指在一个重复模式中嵌套另一个重复模式。它可以通过在外部repeater的循环…

    other 2023年7月27日
    00
  • apache后缀名支持 让apache支持apk ipk下载的方法

    Apache后缀名支持:让Apache支持APK和IPK下载的方法 Apache是一种常用的Web服务器软件,它可以用于提供文件下载服务。默认情况下,Apache只支持一些常见的文件后缀名,如HTML、CSS和JavaScript等。如果你想让Apache支持APK和IPK文件的下载,你需要进行一些配置。 以下是让Apache支持APK和IPK下载的完整攻略…

    other 2023年8月5日
    00
  • Serv-U 建立FTP服务器教程

    Serv-U 建立FTP服务器教程 简介 Serv-U是一款功能强大的FTP服务器软件,它可以在Windows平台上运行,并且易于设置和管理。本教程将介绍如何使用Serv-U来建立FTP服务器。 步骤 安装 首先,你需要从Serv-U官网下载并安装Serv-U软件。安装程序会自动向你提供一些默认设置,你可以根据自己的需求进行修改,但通常使用默认设置即可。 配…

    other 2023年6月27日
    00
  • PowerBuilder学习笔记之3应用对象

    PowerBuilder学习笔记之3应用对象 在PowerBuilder中,应用对象(Application Object)可以看作是整个应用程序的根对象,它对应的类别是Application。在应用对象中,我们可以定义全局变量、处理应用程序的各种事件、设置系统级别的属性等等。 应用对象的创建和销毁 当我们创建一个PowerBuilder应用程序时,系统会自…

    其他 2023年3月28日
    00
  • Python中的套接字编程是什么?

    Python中的套接字编程是基于网络协议的一种编程方式,可以让我们通过编写Python程序实现网络通信。在Python中,套接字(socket)是一个可以进行网络通信的对象,可以用它来发送和接收数据。使用Python中的套接字编程,可以实现多种网络应用,例如:聊天室、文件传输、远程管理、采集网络数据等功能。 套接字编程过程主要包含以下几步: 创建套接字对象:…

    other 2023年6月27日
    00
  • Android自定义View模仿QQ讨论组头像效果

    下面是我对“Android自定义View模仿QQ讨论组头像效果”的攻略详细讲解。 1. 准备工作 在开始自定义View之前,需要做一些准备工作,如下: 需要创建一个Android项目,可以选择任何一种常见的IDE,如AS、VS Code等; 在项目目录下创建一个MyView类,这个类将作为自定义View的核心类; 在res目录下创建一个attrs.xml文件…

    other 2023年6月25日
    00
  • MIUI官方论坛公布小米5安卓7.0公测版固件下载地址 仅限开发版

    MIUI官方论坛公布小米5安卓7.0公测版固件下载地址攻略 本攻略将详细介绍如何在MIUI官方论坛上获取小米5安卓7.0公测版固件的下载地址。请按照以下步骤进行操作: 步骤一:访问MIUI官方论坛 首先,打开您的浏览器,并输入MIUI官方论坛的网址:https://www.miui.com/。 步骤二:登录或注册账号 如果您已经拥有MIUI官方论坛的账号,请…

    other 2023年8月4日
    00
合作推广
合作推广
分享本页
返回顶部