C++ list-map链表与映射表的简单使用

C++ list-map链表与映射表的简单使用

在C++编程中,链表与映射表都是常用的数据结构之一,对于常见的数据处理和算法实现难度降低起到了不可忽视的作用。本文将为大家详细讲解C++中list与map的链表与映射表的简单使用方法。

C++ list链表的简单使用

概述

链表是一种常用的数据结构,与数组不同的是,链表中的存储单位是结构体,在每个结构体中有一个指向另一个结构体的指针。链表的优点在于在插入和删除操作时不需要移动大量数据,同时也可以方便地进行多次插入和删除操作。

初始化

C++中的链表定义在头文件中,可以使用默认的构造函数进行创建:

#include <list>  
std::list<int> myList;

初始化一个int型的空链表。

基本操作

链表的基本操作包括插入、删除等,下面我们给出几个常见的例子。

插入

在末尾插入一个元素:

myList.push_back(1);

在链表头插入一个元素:

myList.push_front(2);    

在特定位置插入一个元素:

std::list<int>::iterator it;  
it = myList.begin();  
it++;  
myList.insert(it,3);

删除

从末尾删除一个元素:

myList.pop_back();

从链表头删除一个元素:

myList.pop_front();

从特定位置删除一个元素:

std::list<int>::iterator it;  
it = myList.begin();  
it++;  
myList.erase(it);

C++ map映射表的简单使用

概述

映射表又称为字典或关联式容器,是一个由键值对组成的数据结构,每个键和值都可以是任意数据类型。其中每个键都是唯一的,我们可以通过键来查找到值。在C++中,映射表使用map容器实现。

初始化

C++中的map也定义在

头文件中,使用默认的构造函数创建:

#include <map>
std::map<int, std::string> myMap;

初始化一个int型的空映射表。

基本操作

映射表的基本操作包括插入、删除和查找等,下面我们给出几个常见的例子。

插入

在映射表中插入一对键值:

myMap.insert(std::make_pair(1, "Hello"));

通过中括号索引插入键值对:

myMap[2] = "World";

删除

从映射表中删除一个元素:

myMap.erase(1);

查找

查找映射表中是否存在某个键:

if (myMap.find(1) != myMap.end()) {
    std::cout << myMap[1];
}

查找映射表中是否存在某个值:

for (auto item : myMap) {
    if (item.second == "World") {
        std::cout << "Key: " << item.first << std::endl;
    }
}

示例说明

下面通过两个示例展示C++中list和map的使用方法。

示例1:利用链表实现一个简单的高温排序程序

程序要求输入五天的高温数据,并按升序排序输出。我们可以利用list容器存储高温数据,并使用sort函数进行排序。

#include <iostream>
#include <list>
#include <algorithm>

int main() {

    std::list<int> temp;

    std::cout << "Please enter the temperature in the past five days:" << std::endl;

    for (int i = 0; i < 5; i++) {
        int input;
        std::cin >> input;
        temp.push_back(input);
    }

    temp.sort();

    std::cout << "The sorted temperature sequence is:" << std::endl;

    for (auto item : temp) {
        std::cout << item << std::endl;
    }

    return 0;
}

示例2:利用映射表实现一个简单的计算英文文本词频程序

程序要求读入一篇英文文章,并计算出其中每个单词的出现频率。我们可以利用map容器存储每个单词,并用一个整型变量记录出现次数。

#include <iostream>
#include <map>
#include <string>
#include <algorithm>

int main() {

    std::map<std::string, int> freq;

    std::cout << "Please enter the text:" << std::endl;

    std::string text;
    std::getline(std::cin, text);

    std::transform(text.begin(), text.end(), text.begin(), ::tolower);

    int pos = 0;
    while (pos != std::string::npos) {
        std::string word;
        pos = text.find(" ");
        word = text.substr(0, pos);
        freq[word]++;
        text.erase(0, pos + 1);
    }

    std::cout << "The word frequency is:" << std::endl;

    for (auto item : freq) {
        std::cout << item.first << ": " << item.second << std::endl;
    }

    return 0;
}

以上就是C++ list与map的链表与映射表的简单使用攻略,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ list-map链表与映射表的简单使用 - Python技术站

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

相关文章

  • androidfirebase服务简介

    以下是Android Firebase服务简介的完整攻略: Android Firebase服务简介 Firebase是一个由Google提供的移动和Web应用程序开发平台,它提供了一系列的工具和服务,帮助开发者构建高质的应用程序。以下是Firebase服务的一些简介: 1. 实时数据库 Firebase实时数据库是一个云托管的NoSQL数据库,可以让您应用…

    other 2023年5月7日
    00
  • 怎么打乱重置Win10开始菜单磁贴布局?

    要打乱和重置Windows 10开始菜单磁贴布局,您可以按照以下步骤进行操作: 打开开始菜单:单击任务栏上的“开始”按钮或按下Windows键。 进入开始菜单布局编辑模式:右键单击开始菜单上的任何一个磁贴,然后选择“更多”选项。 重置磁贴布局:在弹出的菜单中,选择“重置”选项。这将还原开始菜单的默认布局,删除所有自定义的磁贴。 打乱磁贴布局:要打乱磁贴的布局…

    other 2023年9月5日
    00
  • 无线鼠标的接收器丢了怎么办 无线鼠标接收器丢了的解决方法

    无线鼠标的接收器丢了怎么办 简介 很多人使用电脑时都喜欢使用无线鼠标,但有时候不小心把无线鼠标的接收器弄丢了,这会让很多人感到十分苦恼,因为如果没有接收器,无线鼠标就无法正常使用。本文将为大家介绍一些解决办法,希望能够帮助到大家。 解决方法 1. 联系厂家或者售后服务 如果你无线鼠标的接收器丢了,最好的办法就是联系无线鼠标的厂家或者售后服务。有些厂家或者售后…

    other 2023年6月27日
    00
  • JavaScript实现简单网页版计算器

    JavaScript实现简单网页版计算器攻略 1. 创建HTML结构 首先,我们需要创建一个HTML文件来构建网页版计算器的基本结构。在HTML文件中,我们将使用按钮和显示屏来实现计算器的功能。 <!DOCTYPE html> <html> <head> <title>网页版计算器</title> …

    other 2023年8月6日
    00
  • Android Native 内存泄漏系统化解决方案

    Android Native 内存泄漏系统化解决方案 什么是内存泄漏 内存泄漏指的是在程序运行时,由于一些原因导致一部分内存空间无法被回收,进而导致内存使用率不断上升,应用性能下降,最终可能导致程序崩溃等问题。在 Android 应用开发中,由于内存资源的有限性,内存泄漏问题尤为严重。Android Native 内存泄漏的问题同样严峻,因为 Native …

    other 2023年6月26日
    00
  • vue封装jquery修改自身及兄弟元素的方法

    这个问题需要分步骤来回答。 第一步:引入jQuery 为了在Vue项目中使用jQuery,我们需要先引入jQuery库。可以在html文件中直接引入: <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> 但在Vue项目中,推荐通过n…

    other 2023年6月25日
    00
  • C# 函数覆盖总结学习(推荐)

    C# 函数覆盖总结学习(推荐) 1. 前言 函数覆盖(Function Overriding)是 C# 中非常常见的概念,它是指在类的派生类(子类)中重新定义基类(父类)中已有的函数,以达到重载函数的效果。本文将介绍 C# 函数覆盖的相关知识和学习笔记,并附上多个示例代码。 2. 函数覆盖的定义 在 C# 中,函数覆盖的定义如下: class A { pub…

    other 2023年6月27日
    00
  • 如何查找YUM安装的JAVA_HOME环境变量详解

    如何查找YUM安装的JAVA_HOME环境变量详解 在Linux系统中,JAVA_HOME环境变量是非常常见的,它通常用于确定JDK的安装位置和可执行文件路径。如果你使用YUM来安装JDK,那么有时候你需要找到JAVA_HOME环境变量的位置以便于配置相关软件的使用。 下面是查找YUM安装的JAVA_HOME环境变量的详细过程: 步骤一:查看Java安装路径…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部