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

yizhihongxing

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日

相关文章

  • 关于gitadd:gitadd*和gitadd之间有什么区别?

    下面是关于“关于git add: git add * 和 git add . 之间有什么区别?”的完整攻略: 1. git add 命令 在使用 Git 进行版本控制时,git add 命令用于将文件添加到 Git 的暂存区中,以便在提交时将其包含在版本历史记录中。下面是 git add 命令的基本语法: git add [文件名] 2. git add *…

    other 2023年5月7日
    00
  • Go语言中定时器cron的基本使用教程

    Go语言中定时器cron的基本使用教程 介绍 在Go语言中,我们可以使用cron定时器来执行定时任务。Cron是一个基于时间的调度器,它允许我们按照指定的时间间隔或时间点来执行任务。 安装 要使用cron定时器,我们需要先安装cron库。可以使用以下命令来安装cron库: go get github.com/robfig/cron 基本用法 下面是cron定…

    other 2023年8月20日
    00
  • Ruby程序中正则表达式的基本使用教程

    Ruby程序中正则表达式的基本使用教程 正则表达式是一种强大的工具,用于在字符串中匹配和操作文本模式。在Ruby程序中,正则表达式可以通过内置的Regexp类来创建和使用。下面是一个详细的攻略,介绍了Ruby程序中正则表达式的基本使用方法。 创建正则表达式 在Ruby中,可以使用斜杠(/)将正则表达式包裹起来来创建一个正则表达式对象。例如,下面的代码创建了一…

    other 2023年8月19日
    00
  • SpringBoot 插件化开发模式详细总结

    SpringBoot 插件化开发模式详细总结 1. 什么是插件化开发模式 插件化开发模式是一种将应用程序的功能模块化的开发方式。在SpringBoot中,插件化开发模式允许将应用程序的特定功能封装为插件,然后通过添加或删除插件,动态改变应用程序的功能。 2. 插件化开发模式的优势 可扩展性:通过插件化开发模式,应用程序可以轻松地扩展、添加或删除功能,而不必修…

    other 2023年6月28日
    00
  • 电脑开机出现Invalid system disk导致系统无法正常启动的原因及解决方法

    首先,我们需要了解什么是“Invalid system disk”。在简单的说法中,这是电脑无法找到有效系统盘以引导操作系统启动的错误。 原因 造成此问题的主要原因是系统盘被损坏或者系统引导顺序被更改。更具体来说,以下是一些常见原因: U盘或光盘未被移除而导致的系统引导顺序更改; 系统盘驱动器故障; 磁盘驱动器错误或损坏,如硬盘故障; BIOS设置被修改; …

    other 2023年6月27日
    00
  • 开源FTP 服务器 FileZilla Server详解

    开源FTP服务器FileZilla Server详解 FileZilla Server简介 FileZilla Server是一款开源免费的FTP服务器软件,可以在Windows系统上运行,支持FTP、FTP over SSL/TLS(FTPS)和SSH File Transfer Protocol(SFTP)协议。它提供了一个直观的用户界面,易于配置和管理…

    other 2023年6月27日
    00
  • C++详细讲解图论的基础与图的储存

    C++详细讲解图论的基础与图的储存 简介 图是计算机科学中的一种数据结构,广泛用于网络、社交媒体、计算机程序等领域。本文将详细讲解关于图的基础知识以及如何在C++中实现图的储存。 图的基础概念 图是由节点(顶点)和边构成的一种数据结构。可以用图来描述任何二元关系,如夫妻、朋友等等。图可以分为有向图和无向图两种。 无向图:顶点之间的边没有方向,也就是没有从A到…

    other 2023年6月27日
    00
  • 批处理中常用命令介绍(Echo、rem、goto、call、pause、if、for)

    批处理是一种批量处理脚本语言,它可以帮助用户重复地执行一系列命令。在批处理过程中,常用的一些命令有Echo、rem、goto、call、pause、if、for,下面我将详细讲解这些命令的用法。 Echo命令 Echo 命令是将字符串输出到屏幕上的命令,通常用于脚本输出提示信息或者调试信息。它有以下两种语法: Echo [message] Echo.[mes…

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