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

yizhihongxing

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日

相关文章

  • 指定端口号的scp

    指定端口号的SCP攻略 SCP(Secure Copy)是一种基于SSH协议的文件传输工具,用于在本地计算机和远程计算机之间传文件。在使用时,可以通过指定端口号来连接远程计算机。本攻略将详细讲解如何指定端口号的,包括SCP的基本概念、如何指定端口号、以及两个示例说明。 SCP的基本概念 SCP是一种基于SSH协议的文件传输工具,用于在本地计算机和远程计算机之…

    other 2023年5月7日
    00
  • js正则排除某个单词

    在JavaScript中,可以使用正则表达式来匹配和替换字符串。有时候,我们需要排除某个单词,即不匹配该单词。下面是JS正则表达式排除某个单词的完整略,包括两个示例说明。 方法一:使用负向预查 负向预查是一种零宽度断言,用于匹配不符合某种模式的字符串。在JS正则表达式中,可以使用负向预查来排除某个单词。面是一个示例,用于演示如何使用负向预查排除单词: con…

    other 2023年5月9日
    00
  • 流放之路3.4圣堂武僧守护者型双捷召唤BD介绍 低价速刷通关BD攻略

    流放之路3.4圣堂武僧守护者型双捷召唤BD介绍 低价速刷通关BD攻略 简介 在流放之路3.4版本中,圣堂武僧守护者型双捷召唤BD是一种强大的低价速刷通关BD。该BD利用圣堂武僧的守护者型召唤技能和双捷技能,能够在短时间内快速击败敌人,适合新手玩家或者想要快速通关的玩家。 技能配置 以下是该BD的技能配置: 主技能:圣堂武僧的守护者型召唤技能 辅助技能:双捷技…

    other 2023年8月6日
    00
  • HTML5页面无缝闪开的问题及解决方案

    HTML5页面无缝闪开的问题是指页面在加载完成前,页面的元素先显示出来,之后再调整位置。这种体验会给用户带来不良的用户体验,因此需要解决。以下是解决方案: 1. 加载样式表前使用JS隐藏元素 在页面头部的 <head> 标签中加入以下代码: <style> .no-flash { display: none; } </style…

    other 2023年6月26日
    00
  • android调用web service(cxf)实例应用详解

    Android调用Web Service(CXF)实例应用详解 目录 前言 步骤 步骤一:创建 Web Service 步骤二:创建 Android 工程 步骤三:修改 AndroidManifest.xml 文件 步骤四:导入 CXF 库文件 步骤五:创建 Web Service 的代理类 步骤六:调用 Web Service 示例说明 示例 1:获取天气…

    other 2023年6月27日
    00
  • WPF学习09:数据绑定之 Binding to List Data

    WPF学习09:数据绑定之 Binding to List Data的完整攻略 本文将为您提供WPF学习09:数据绑定之 Binding to List Data的完整攻略,包括介绍、使用方法和两个示例说明。 介绍 WPF是一种基于XAML的用户界面框架,可以用于创建Windows应用程序。数据绑定是WPF中的一个重要特性,可以将数据与UI元素进行绑定,实现…

    other 2023年5月6日
    00
  • java如何确定一个链表有环及入口节点

    确定一个链表是否存在环及环的入口节点是链表中常见的问题,Java中可以通过快慢指针和哈希表两种方式来解决。 快慢指针法 快慢指针法的主要思想是,使用两个指针,一个指针每次移动两个结点,一个指针每次移动一个结点,两个指针同时从链表的头结点出发,如果存在环,则两个指针必定会相遇。然后再用两个指针分别从相遇点和头结点出发,每次移动一个结点,最终两个指针相遇的结点即…

    other 2023年6月27日
    00
  • cny是什么货币?

    CNY是什么货币? CNY是中国货币的简写,全称为“人民币”。人民币是中国的法定货币,在国内有广泛的流通。人民币由中国人民银行发行,目前有纸币和硬币两种形式。 人民币的历史 人民币起源于1948年,当时新成立的中国人民银行开始发行人民币。初期的人民币以等价交换的方式发行,即原先流通的旧钞换取等额新钞。后来,人民银行逐渐完善了货币体系,发行了一系列新的货币,如…

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